내가 생각했을때 문제에서 원하는부분
첫째 줄에 빨간색 타일의 수 R과 갈색 타일의 수 B가 주어진다. (8 ≤ R ≤ 5000, 1 ≤ B ≤ 2,000,000)
첫째 줄에 상근이네 방의 크기 L과 W을 공백으로 구분하여 출력한다.
만약,
두 수가 다르다면,
큰 수가 L이 되고 작은 수가 W이 된다.
항상 정답이 유일한 경우만 입력으로 주어진다.
내가 이 문제를 보고 생각해본 부분
BufferedReader를 사용하여 표준 입력받는다.
한 줄의 입력을 읽어와 공백을 기준으로 분리하여 배열에 저장한다.
첫 번째 입력값을 정수형으로 변환하여 빨간색 타일 수를 저장한다.
두 번째 입력값을 정수형으로 변환하여 갈색 타일 수를 저장한다.
방 크기 계산
방의 길이(l)와 너비(w)를 선언한다.
길이를 1부터 시작하여 무한 루프를 돌려준다.
갈색 타일 수(B)가 현재 길이(l)로 나누어 떨어지는지 확인한다.
갈색 타일 수를 길이로 나누어 너비를 계산한다.
방의 외곽 타일 수와 빨간색 타일 수(R)가 일치하는지 확인한다.
최종 방의 크기를 계산하여 출력한다.
코드로 구현
package baekjoon.baekjoon_24;
import java.io.*;
// 백준 2858번 문제
public class Main845 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
// 입력 처리
String[] input = br.readLine().split(" ");
int R = Integer.parseInt(input[0]); // 빨간색 타일 수
int B = Integer.parseInt(input[1]); // 갈색 타일 수
int l;
int w;
for(l = 1; ; l++) {
if(B % l == 0) {
w = B / l;
if(l * 2 + w * 2 + 4 == R) {
// 방의 크기를 계산하여 출력
System.out.println((w + 2) + " " + (l + 2));
break;
}
}
}
br.close();
}
}
코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.