본문 바로가기

알고리즘/BOJ

2858번

2858번 - 기숙사 바닥


처음에 문제를 너무 얕잡아 봤다.. 쉬운데? 하면서 풀었는데 틀렸다.


  if ((x - 2)*(y - 2== B)
  {
         break;
  }


처음에 이 부분을 체크하지 않고 바로 답을 구해주는 방식으로 풀어서 틀렸다.


정답이 유일무이하다는 문제의 지문을 보고, 아 구하기만 하면 무조건 답이 나오는구나 하고 생각했는데 큰 오산이었다.


x,y 를 만족하는 많은 약수들 중에, 다시 가장자리 숫자나, 갈색 타일의 숫자가 다를 수도 있다는 사실을 착각했다.


문제를 제대로 읽어야 겠다. 자만 금물


<정답 코드>


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
#include<iostream>
 
using namespace std;
 
int main()
{
    int R, B, sum;
    cin >> R >> B;
    sum = R + B;
 
    int x, y;
    for (int i = 3; i <= sum/3; i++)
    {
        if (sum%i == 0)
        {
            x = sum / i;
            y = i;
 
            if ((x - 2)*(y - 2== B)
            {
                break;
            }
        }
    }
 
    cout << x << " " << y << endl;
 
    return 0;
}
cs


반응형

'알고리즘 > BOJ' 카테고리의 다른 글

7453번  (0) 2018.01.11
1062번  (0) 2018.01.11
1251번  (0) 2018.01.11
2966번  (0) 2018.01.11
1019번  (0) 2018.01.11