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

+ Recent posts