<문제>
<잘못된 풀이>
#include<stdio.h>
int main(void) {
int a, b, c;
scanf("%d %d %d", &a, &b, &c);
if (a == b == c)
printf("%d", 10000 + a * 1000);
if ((a == b)&&(a != c))
printf("%d", 1000 + a * 100);
if ((b == c)&&(b!= a ))
printf("%d", 1000 + b * 100);
if ((a == c)&&(a != b))
printf("%d", 1000 + c * 100);
if ((a != b) && (b != c) && (a != c)) {
if ((a > b > c)||(a > c > b)) printf("%d", a * 100);
if ((b > a > c) || (b > c > a)) printf("%d", b * 100);
if ((c > a > b) || (c > b > a)) printf("%d", c * 100);
}
return 0;
}
이 코드에는 틀린부분이 크게 두군데가 있는데, a > b > c 이렇게 잘못된 비교를 한것과 a==b==c 이렇게 잘못된 동등 관계식을 사용해 준것이 오답의 원인이다. 관계 연산자는 대소와 동등의 관계를 따지는 연산자인데, 둘이 같은지 다른지 누가 더 크고 작은지를 따지는 연산자이다. 관계연산자는 두개의 값을 비교하기 때문에 비교연산자라고 하기도 한다.
<정답 코드>
#include<stdio.h>
int main(void) {
int a, b, c;
scanf("%d %d %d", &a, &b, &c);
if ((a == b)&&(b== c))
printf("%d", 10000 + a * 1000);
if ((a == b)&&(a != c))
printf("%d", 1000 + a * 100);
if ((b == c)&&(b!= a ))
printf("%d", 1000 + b * 100);
if ((a == c)&&(a != b))
printf("%d", 1000 + c * 100);
if ((a != b) && (b != c) && (a != c)) {
if ((a>b)&&(a>c)) printf("%d", a * 100);
if ((b>a)&&(b>c)) printf("%d", b * 100);
if ((c>a)&&(c>b)) printf("%d", c * 100);
}
return 0;
올바른 관계연산을 통해 내가 원하는 출력값을 얻을 수 있었다.