<풀이>
사진처럼 가로(l), 세로(w)로 가정했을때 r=l*2 + (w-2)*2가 되면서 b=(l-2)*(w-2)가 되는 경우 정답이다.
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer s = new StringTokenizer(br.readLine());
int r = Integer.parseInt(s.nextToken()); //바깥쪽 빨간타일
int b = Integer.parseInt(s.nextToken()); //안쪽 갈색타일
//방크기=가로*세로 -> 임의로 가로(l) 세로(w)로 잡고 l>=w조건 존재
//방크기(9)=가로(l=3)*세로(w=3)일때 빨간타일 8개, 갈색타일 1개가 유일한 정답의 최소조건이므로
//l과 w의 초기값은 3으로 시작하고 w는 l보다 작거나 같을때까지 구해야 l>=w를 만족한다.
for (int l = 3; l <= r; l++) {
for (int w = 3; w <= l; w++) {
if(l*2+(w-2)*2 == r && (l-2)*(w-2)==b){
bw.write(l+" "+w);
break;
}
}
}
bw.close();
}
}
아래 코드처럼 하나씩 l과 w를 늘려가면서 전체타일 수 sum이 될때까지 비교하는게 간결하고 이해하기가 쉬웠는데 시간 초과가 떠서 여러번 고치면서 방법을 찾아봤는데 안되길래 포기했다...ㅜㅜ
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer s = new StringTokenizer(br.readLine());
int r = Integer.parseInt(s.nextToken());
int b = Integer.parseInt(s.nextToken());
int sum = r+b;
int l = 3;
int w = 3;
while(sum != l * w ) {
if(sum > l * w) {
if(l == w) {
l++; //큰값이 l이 되니까 l부터 증가
}else {
w++;
}
}
}
bw.write(l + " " + w);
bw.close();
}
}
'Algorithm > Java' 카테고리의 다른 글
[알고리즘_Java] 백준 10974번 모든 순열 (재귀) (0) | 2022.03.12 |
---|---|
[알고리즘_Java] 백준 9094번 수학적 호기심 (0) | 2022.03.02 |
[알고리즘_Java] 백준 2702번 초6 수학 (최소공배수&최대공약수) (0) | 2022.02.28 |
[알고리즘_Java] 백준 5555번 반지 (substring) (0) | 2022.02.25 |
[알고리즘_Java] 백준 17173번 배수들의 합 (HashSet) (0) | 2022.02.19 |