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 |
반응형