https://www.acmicpc.net/problem/2858
์ฝ๋
import java.util.Scanner;
public class Main {
static final int max = 5000;
static final int max2 = 4000;
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int R = scan.nextInt(); // ๋นจ๊ฐ
int B = scan.nextInt(); // ๊ฐ์
int L = 0;
int W = 0;
for(int i=1; i<=max; i++) {
for(int j=1; j<=max2; j++) {
if(R+B == i*j) {
if(R == (i*2) + (j-2)*2) {
L = i;
W = j;
break;
}
else if(R == (j*2) + (i-2)*2) {
L = j;
W = i;
break;
}
}
}
}
System.out.println(L + " " + W);
scan.close();
}
}
ํ์ด
๋๋ ์ํ์ ์ผ๋ก ๊ท์น์ ์ฐพ์์ ํด๊ฒฐํ๋ค ..
๊ฐ๋ก = L, ์ธ๋ก = W, ๋นจ๊ฐ์ = R, ๊ฐ์ = B๋ผ๊ณ ํ์๋,(L>W)
์ผ๋จ ์ฒซ๋ฒ์งธ ์กฐ๊ฑด์ ๊ฐ๋ก * ์ธ๋ก = ๋นจ๊ฐ์ํ์ผ + ๊ฐ์ ํ์ผ์ด๋ค.
1) L * W = R + B
๊ฐ์ฅ ์๋ฆฌ๋ ๋นจ๊ฐ์์ด๋ฏ๋ก, ๋นจ๊ฐ์ ํ์ผ์ ํฉ์
์๋ณ(L) + ์๋ซ๋ณ(L) + (์๋ณ-2)(W-2) + (์๋ณ-2)(W-2) ์ด๋ค.
์ ์ฌ์ง์์, L = 4, W = 3์ด๋ค.
ํ์ง๋ง ๊ฐ ๊ผญ์ง์ ์ ๋ฉด์ ๊ฒน์น๋ฏ๋ก ๋ํ ๋ ๋นผ์ค๋ค.
2) R = (L*2) + (W-2) * 2
1) L * W = R + B
2) R = (L*2) + (W-2) * 2
์ ๋ ์์ ๊ทธ๋๋ก ์ ์ฉํ๋ค..
1 <= B <= 2,000,000 ์ด๋ฏ๋ก i, j์ ์ต๋๊ฐ์ 5,000 , 4,000 ์ผ๋ก ์ก์๋ค.
1) i, j์ ๋ฐ๋ณต๋ฌธ์ ํตํด R+B = i*j ์ธ ๊ณณ์ ์ฐพ๋๋ค.
2) R+b = i*j ์ผ๋, R = (i*2) + (j-2) *2 ์ธ ๊ณณ์ ์ฐพ๋๋ค.
3) L์ด W๋ณด๋ค ํฌ๋ฏ๋ก, R = (i*2) + (j-2) *2 ์ผ๋ L์ ๊ฐ์ด i, W์ ๊ฐ์ด j๊ฐ๋๊ณ ๋ฐ๋๋ก๋ ๋ฐ๋๊ฐ์ด๋ค.
'Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 2501๋ฒ: ์ฝ์ ๊ตฌํ๊ธฐ (0) | 2020.01.20 |
---|---|
[๋ฐฑ์ค] 2576๋ฒ: ํ์ (0) | 2020.01.20 |
[๋ฐฑ์ค] 10798๋ฒ: ์ธ๋ก์ฝ๊ธฐ (0) | 2020.01.18 |
[๋ฐฑ์ค] 2851๋ฒ: ์ํผ ๋ง๋ฆฌ์ค (0) | 2020.01.18 |
[๋ฐฑ์ค] 1977๋ฒ: ์์ ์ ๊ณฑ์ (0) | 2020.01.18 |
๋๊ธ