본문 바로가기

Coding Tests/백준 온라인

C언어_백준온라인 2480번

<문제>

 

 

 

<잘못된 풀이>

#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;

올바른 관계연산을 통해 내가 원하는 출력값을 얻을 수 있었다.