2020-10-02
문제
상근이는 기숙사 생활을 한다.
상근이의 방의 크기는 L*W 이다.
수업시간에 타일 채우기 경우의 수를 계산하던 상근이는
자신의 방도 1*1크기 타일로 채우려고 한다. 이때, 가장자리는 빨간색으로,
나머지는 갈색으로 채우려고 한다.
아래 그림은 상근이의 방의 크기가 4*3일 때 이다.
어느 날 상근이네 방에 하근이가 놀러왔다.
하근이는 아름다운 타일 배치에 감동받았다.
다시 방으로 돌아온 하근이는 빨간색과 갈색 타일의 개수는 기억했지만,
방의 크기는 기억해내지 못했다.
빨간색과 갈색 타일의 개수가 주어졌을 때,
상근이 방의 크기를 구하는 프로그램을 작성하시오.
입력
첫째 줄에 빨간색 타일의 수 R과 갈색 타일의 수 B가 주어진다.
(8 ≤ R ≤ 5000, 1 ≤ B ≤ 2,000,000)
출력
첫째 줄에 상근이네 방의 크기 L과 W을 공백으로 구분하여 출력한다.
만약, 두 수가 다르다면, 큰 수가 L이 되고 작은 수가 W이 된다.
항상 정답이 유일한 경우만 입력으로 주어진다.
소스코드
Scanner scan = new Scanner(System.in);
int Bn = scan.nextInt();
int Rn = scan.nextInt();
int sum = Bn + Rn;
//주어진 값에 합을 구함
int H = 3;
int W = 3;
//초기값 설정
//빨간 타일이 하나만 있는 바닥 설정
//해당 값보다 작을시 빨간타일이 없음
if(sum < 9) {
System.out.println(-1);
//9보다 작으면 빨간타일 없음
}else {
while(sum != H * W || sum > H * W ) {
if(sum > H * W) {
if(H == W) {
H++;
}else {
W++;
}
}
}
//항상 열의 값이 크기 때문에 우선적으로 열 값을 증가시킴
//열값이 클경우에는 다음에는 행 값을 더해주면서 비교
//sum 값가 같아지거나 커지면 반복문 탈출
if(sum == H * W) {
System.out.println(H + " " + W);
}else {
System.out.println(-1);
}
//값 체크 후 같으면 출력
//다르면 -1
}
출처 링크 : www.acmicpc.net/problem/2858