1. 층별로 좌표값을 준다
2. 좌표값을 통해 x좌표의차이 / y좌표의 차이를 구한다.
3. xdiff < 0 && ydiff > 0 인경우와 xdiff > 0 && ydiff < 0 인경우만 값이 조금 달라지므로
유의하여 답을 출력한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | #include <iostream> #include <algorithm> using namespace std; int d[200]; int t; int main() { ios_base::sync_with_stdio(false); /* 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 */ int sum = 1; for (int i = 1; i <= 150; i++) { d[i] = sum; sum += i; } cin >> t; for (int tc = 1; tc <= t; tc++) { int a, b, ax, bx, ay, by; cin >> a >> b; for (int i = 1; i <= 145; i++) { if (d[i] > a) { ax = i - 1; break; } } for (int i = 1; i <= 145; i++) { if (d[i] > b) { bx = i - 1; break; } } ay = a - d[ax]; by = b - d[bx]; int xdiff = abs(ax - bx); int ydiff = abs(ay - by); int addNum = 0; if ((ax < bx && ay> by) || (ax > bx && ay < by)) { addNum = min(xdiff, ydiff); } cout << "#" << tc << " "; if (xdiff < ydiff) cout << ydiff + addNum << endl; else cout << xdiff + addNum << endl; } } | cs |
'SWEA::문제풀이' 카테고리의 다른 글
2117 홈 방범 서비스 (0) | 2018.04.14 |
---|---|
2112 보호 필름 (3) | 2018.04.13 |
2383 점심 식사시간 (4) | 2018.04.11 |
1861 정사각형 방 (0) | 2018.04.10 |
4014 활주로 건설 (2) | 2018.04.09 |