중학교 과정에서 나오는 피타고라스 정리를 사용하는 문제로 브론즈3 난이도로 책정된 문제답게 역시 초반 문제는 쉽군이라는 생각으로 해치우려고 했는데 이게 무슨일이람... 벌써 4번이나 틀렸다...
8달 전의 나는 고민도 안하고 파이썬으로 맞춘 이 문제를 나는 지금 4번이나 틀리면서 코드를 고치고 있다... 우선 원래의 내 코드는 이거였다.
#include <iostream>
using namespace std;
int main() {
while (true){
long long a, b, c, ans = 0;
//문제 생길부분이 사실 여기 밖에 없다 생각해서
//처음에는 int로 선언했다가 안전하게 long long까지 왔다.
cin>>a>>b>>c;
if (a == 0 && b == 0 && c == 0) break;
ans = a * a + b * b;
if (ans == c * c) cout<<"right"<<endl;
else cout<<"wrong"<<endl;
}
return 0;
}
근데 놀랍게도 저 변수 선언의 문제가 아니었다... 당연히 변수 선언에서 문제가 생겼다고 생각했는데 고쳐도 "틀렸습니다"가 계속 나오니깐 혼란의 연속이었다. 그래서 동기에게 도움을 구했는데... 마지막 인풋이 항상 빗변이라는 조건이 없다는 동기의 말에 속는 셈 치고 최댓값을 찾는 코드를 추가하였다. 근데 놀랍게도 이게 맞았다... 아니 이게 맞네?? 그냥 NRV(비슷한 상황을 뜻하는 말이다...과애들하고 통용되어서 TMI로 넣어 보았다.) 당했다... 이거 틀리고 시플플 처음부터 다시 볼까 고민하고 있었는데 다행이다....
#include <iostream>
using namespace std;
int main() {
while (true){
long long a, b, c, temp = 0, ans = 0;
cin>>a>>b>>c;
if (a > b)
if (a > c){
temp = a;
a = c;
c = temp;
}
if (b > a)
if (b > c){
temp = b;
b = c;
c = temp;
}
if (a == 0 && b == 0 && c == 0) break;
ans = a * a + b * b;
if (ans == c * c) cout<<"right"<<endl;
else cout<<"wrong"<<endl;
}
return 0;
}