https://www.acmicpc.net/problem/2752
문제
동규는 세수를 하다가 정렬이 하고 싶어졌다.
정수 세 개를 생각한 뒤에, 이를 오름차순으로 정렬하고 싶어졌다.
정수 세 개가 주어졌을 때, 가장 작은 수, 그 다음 수, 가장 큰 수를 출력하는 프로그램을 작성하시오.
[Python] 코드
a, b, c = map(int, input().split())
nums = sorted([a, b, c])
print(*nums)
풀이
1. map과 split함수를 이용해서 받아온 수를 정수로 분리하여 abc에 저장한다
2. 그 다음 abc를 넣은 리스트를 sorted해서 정렬한 리스트를 새로 반환한다
3. *을 사용해서 리스트를 공백으로 나눠 출력한다.
위를 한 줄로 표시 가능한데 그 코드는 바로 다음과 같다
print(*sorted(map(int, input().split())))
위의 풀이를 그냥 한 줄로 다 모아 나타낸 것이다. 풀어 쓰면 위의 코드와 같다.
[C] 코드
#include <stdio.h>
int main() {
int arr[3];
int num, tmp;
for (int i = 0; i < 3; i++) {
scanf("%d", &num);
arr[i] = num;
}
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 2 - i; j++) {
if (arr[j] > arr[j + 1]) {
tmp = arr[j + 1];
arr[j + 1] = arr[j];
arr[j] = tmp;
}
}
}
for (int i = 0; i < 3; i++) {
printf("%d ", arr[i]);
}
return 0;
}
풀이
1. 배열을 생성한 후 반복문을 사용하여 입력을 받아 i 인덱스에 값을 넣는다.
1-1. 이제 생각해보니 그냥 3개 정수 한 번에 받아서 배열을 생성하는게 더 효율적일 것 같다. 이렇게 말이다.
int a, b, c, tmp;
scanf("%d %d %d", &a, &b, &c);
int arr[3] = {a, b, c};
근데 위의 코드는 배열 먼저 만들어버려서 귀찮은 일을 했다....
2. 버블 정렬을 사용해서 오름차순으로 만들어준다.
3. 이제 정리된 값을 출력해준다.
'백준 > 브론즈4' 카테고리의 다른 글
| [Java] 백준 2083번 - 럭비 클럽 (0) | 2026.01.29 |
|---|---|
| [Python/C] 백준 5554번 - 심부름 가는 길 (0) | 2025.04.13 |
| [Python/C] 백준 2742번 - 기찍 N (0) | 2025.04.13 |
| [Python/C] 백준 2480번 - 주사위 세개 (1) | 2025.04.13 |
| [Python] 백준 5565번 - 영수증 (0) | 2025.04.13 |