SW Expert Academy
SW ํ๋ก๊ทธ๋๋ฐ ์ญ๋ ๊ฐํ์ ๋์์ด ๋๋ ๋ค์ํ ํ์ต ์ปจํ ์ธ ๋ฅผ ํ์ธํ์ธ์!
swexpertacademy.com


์ฝ๋
import java.util.Scanner;
public class Solution {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int T = scan.nextInt();
for(int tc=1; tc<=T; tc++) {
int p = scan.nextInt();
int q = scan.nextInt();
int result = 0;
/* ์ฒซ๋ฒ์งธ ๊ฐ์ ๋ํ x, y ์ขํ */
int sum1 = 0;
int x1 = 0;
int y1 = 0;
for(int i=1; ; i++) {
sum1 += i;
if(sum1 >= p) {
x1 = i - (sum1-p);
y1 = (i+1) - x1;
break;
}
}
/* ๋๋ฒ์งธ ๊ฐ์ ๋ํ x, y ์ขํ */
int sum2 = 0;
int x2 = 0;
int y2 = 0;
for(int i=1; ; i++) {
sum2 += i;
if(sum2 >= q) {
x2 = i - (sum2-q);
y2 = (i+1) - x2;
break;
}
}
/* ์ต์ข
x, y ์ขํ */
int x3 = x1 + x2;
int y3 = y1 + y2;
int sum3 = 1;
for(int i=1; i<(x3+y3)-1; i++) {
sum3 += i;
}
result = sum3 + (x3-1);
System.out.println("#" + tc + " " + result);
//System.out.println(x1 + " " + y1 + " " + x2 + " " + y2);
}
scan.close();
}
}
ํ์ด
์.. ๊ท์น์ ์ฐพ๋๊ฒ ์ข ํท๊ฐ๋ ธ๋ค.
๋ฌธ์ ์์๋ ์ขํ๊ฐ ์๋ ์ขํ์ ๊ฐ์ด ์ฃผ์ด์ง๋ค.
์๋ฅผ๋ค์ด ๊ทธ๋ฆผ์์ 1์ ์ขํ๋ (1 , 1) ์ด๊ณ , 5์ ์ขํ๋ (2 , 2) ์ด๋ค.
๋ฐ๋ผ์ ๋ ์ฐ์ฐ โ ๋ (1 + 2, 1 + 2) ์ ๊ฐ์ ๊ตฌํ๋ ๊ฒ์ด๋ค.
๋ฐ๋ผ์ ๋ค์๊ณผ ๊ฐ์ด ๋ฌธ์ ๋ฅผ ์๊ฐํ๊ณ ํ์๋ค.
1. ์ฃผ์ด์ง ๋๊ฐ์ ๊ฐ์ ๋ํ ์ขํ๋ฅผ ์ฐพ๋๋ค.
2. ๋ ์ขํ๊ฐ์ x, y ์ขํ๋ผ๋ฆฌ ๋ํ๋ค
3. ์ต์ข ์ ์ผ๋ก ๋์จ x, y ์ขํ์ ๊ฐ์ ๊ตฌํ๋ค.
๋ฌธ์ ์์ ํ๋ฉด์ ํญ์ ๋๊ฐ์ ์๋์ชฝ์ผ๋ก ๊ฐ์ด ์งํ๋๋ค.
๊ทธ ๊ฐฏ์๋ 1๊ฐ 2๊ฐ 3๊ฐ ... n๊ฐ ์์ด๋ค.
๋ฐ๋ผ์ ๊ฐ์ด ์ฃผ์ด์ก์๋, ๊ทธ ๊ฐ์ด ๋ช๋ฒ์งธ ๋๊ฐ์ ์ ํด๋นํ๋์ง๋ถํฐ ์ฐพ์๋ค.
๋ช๋ฒ์งธ ๋๊ฐ์ ์ ์กด์ฌํ๋์ง๋ 1๋ถํฐ ๋ํ๊ฐ์ด p๋ณด๋ค ์ปค์ง๋์ i๊ฐ์ด๋ค.
9(3, 2)๋ฅผ ์๋ก๋ค๋ฉด 1+2+3+4 = 10(sum) ์ด๊ณ , 9(p)๋ณด๋ค ํฌ๋ฏ๋ก 4๋ฒ์งธ ๋๊ฐ์ ์ ๋ผ์ธ(i=4)์ ์กด์ฌํ๋ค.
4๋ฒ์งธ ๋ผ์ธ์ ์กด์ฌํ๋ ์๋ค์ x์ขํ + y์ขํ์ ๊ฐ์ด 5์ด๋ค.
x์ ์ขํ๋ i๊ฐ์์ (sum-p) ๋ฅผ ๋บ ๊ฐ์ด๊ณ ,
x + y = (i+1) ์ด๋ผ๋ ์์ด ์ฑ๋ฆฝํ๋ฏ๋ก, y = (i+1) - x ๋ผ๋ ์์ด ์ฑ๋ฆฝํ๋ค.
์ต์ข ์ ์ผ๋ก x, y ์ขํ๋ ๋ค์๊ณผ ๊ฐ๋ค.
x1 = i - (sum1-p);
y1 = (i+1) - x1;
์ ๊ท์น์ผ๋ก ์ฒซ๋ฒ์งธ, ๋๋ฒ์งธ ๊ฐ์ ๋ํ x, y ์ขํ๊ฐ์ ์ฐพ์ ์ ์๋ค.
์ต์ข ์ ์ผ๋ก ๋ x, y ์ขํ์ ํฉ์๋ํ ๊ฐ์ ๊ตฌํด์ผ ํ๋ค.
์ด๊ฑฐ๋ ๋๋ (1, y)์ ์กด์ฌํ๋ ๊ฐ์ฅ ์ข์ธก ๊ผญ๋๊ธฐ๊ฐ์ ๋จผ์ ์ฐพ์์ฃผ์๋ค.
(1,1) = 1
(1,2) = 2
(1,3) = 4
(1,4) = 7
(1,5) = 11 ...
์ ์์๋ 1, 2, 3, 4 ์ฉ ์ฆ๊ฐํ๋ ๊ท์น์ด ์กด์ฌํ๋ค.
13(3, 3)์ ์๋ก๋ค๋ฉด ๊ฐ์ฅ ์ข์ธก ๊ผญ๋๊ธฐ์ ๊ฐ์ 11(1, 5) ์ด๋ค.
11 = 1+ 1+2+3+4 ์ ๊ฐ์ด๋ค.
์ฆ i=1 ๋ถํฐ (3+3)-2 ๊น์ง ๋ํ ๊ฐ๊ณผ ๋์ผํ๋ค.
for(int i=1; i<(x3+y3)-1; i++) {
sum3 += i;
}
๋ฐ๋ผ์ ์ for๋ฌธ์ผ๋ก ๊ฐ์ฅ ์ผ์ชฝ ๊ผญ๋๊ธฐ์ ๊ฐ์ ๊ตฌํ ์ ์๊ณ ,
๊ทธ ์ดํ์ ํด๋น x, y ์ขํ๊ฐ์ ๋ช๊ฐ์ x์ขํ๋งํผ ์ด๋ํ๋์ง ๋ํ๋ฉด ๋๋ค.
result = sum3 + (x3-1);
'Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[SW Expert Academy] - (D3)7087. ๋ฌธ์ ์ ๋ชฉ ๋ถ์ด๊ธฐ (0) | 2020.06.04 |
---|---|
[SW Expert Academy] - (D3)5948. ์์์ด์ 7-3-5 ๊ฒ์ (0) | 2020.06.02 |
[SW Expert Academy] - (D3)3142. ์์ค์ด์ ์ ๋นํ ๋ฟ์ ์ฒ (0) | 2020.05.31 |
[SW Expert Academy] - (D3)5515. 2016๋ ์์ผ ๋ง์ถ๊ธฐ (0) | 2020.05.27 |
[SW Expert Academy] - (D3)8500. ๊ทน์ฅ ์ข์ (0) | 2020.05.26 |
๋๊ธ