코딩테스트 & 문제 풀이
[C]백준_2752 : 세수정렬
Hicecream
2023. 12. 18. 15:15
2023년 2월 11일에 작성됨
https://www.acmicpc.net/problem/2752
2752번: 세수정렬
정수 세 개가 주어진다. 이 수는 1보다 크거나 같고, 1,000,000보다 작거나 같다. 이 수는 모두 다르다.
www.acmicpc.net
문제 분석
숫자 3개를 입력했을 때, 오름차순으로 정렬하여 출력하는 문제이다.
소스 코드 -1 (⭕)
#include <stdio.h>
int main(void)
{
int a, b, c;
scanf("%d %d %d", &a, &b, &c);
if (a < b && b < c) {
printf("%d %d %d", a, b, c);
}
else if (a < c && c < b) {
printf("%d %d %d", a, c, b);
}
else if (b < c && c < a) {
printf("%d %d %d", b, c, a);
}
else if (b < a && a < c) {
printf("%d %d %d", b, a, c);
}
else if (c < b && b < a) {
printf("%d %d %d", c, b, a);
}
else
printf("%d %d %d", c, a, b);
return 0;
}
소스 코드 -2 (⭕)
#include <stdio.h>
int main() {
int a, b, c, t;
scanf("%d %d %d", &a, &b, &c);
if (a > b) {
t = a; a = b; b = t;
}
if (b > c) {
t = b; b = c; c = t;
}
if (a > b) {
t = a; a = b; b = t;
}
printf("%d %d %d\n", a, b, c);
return 0;
}
코드 분석
코드-1
if 문으로 각 경우의 수를 나누어서 해당 경우의 순으로 출력해준다.
코드-2
a, b, c 순으로 크기를 맞추기 위해 a를 가장 작은 수로, c를 가장 큰 수로 해줘야 한다.
a가 b보다 큰 경우, 변수 t를 임시 저장소로 이용하여 a와 b의 값을 바꿔준다.
b가 c보다 큰 경우, b와 c의 값을 서로 바꿔주면 c가 젤 큰 수가 된다.
마지막으로 a가 b보다 큰 경우, 값을 서로 바꿔주면 a가 젤 작은 수가 된다.
end
이 문제를 c언어 배운지 얼마 안됐을 때 풀었는데 코드-1이 지금보니 너무 노가다 식이라 웃긴다ㅋㅋㅋㅋ 차라리 중첩 if문을 사용하는게 더 나았을건데ㅋㅋㅋ