티스토리 뷰
[Blog] 백준(BaeKJoon): 최댓값(2562번)
문제
9개의 서로 다른 자연수가 주어질 때, 이들 중 최댓값을 찾고 그 최댓값이 몇 번째 수인지를 구하는 프로그램을 작성하시오.
예를 들어, 서로 다른 9개의 자연수
3, 29, 38, 12, 57, 74, 40, 85, 61
이 주어지면, 이들 중 최댓값은 85이고, 이 값은 8번째 수이다.
입력
첫 째 줄부터 아홉 번째 줄까지 한 줄에 하나의 자연수가 주어진다. 주어지는 자연수는 100 보다 작다.
출력
첫째 줄에 최댓값을 출력하고, 둘째 줄에 최댓값이 몇 번째 수인지를 출력한다.
예제 입력 1
3
29
38
12
57
74
40
85
61
예제 출력 1
85
8
출처: Olympiad > 한국정보올림피아드 > 한국정보올림피아드시․도지역본선 > 지역본선 2007 > 초등부 1번
해설
단순히 최댓값을 찾기 위해서라면 배열을 사욥할 이유는 없다. 몇 번째 입력된 수가 최댓값인지를 저장하기 위해 배열을 이용했다. 정확히는 배열의 첨자를 이용한 것이다. 대소 비교를 할 자연수가 아홉 개로 정해졌기에 for 문을 사용했고 이때의 변수 i를 배열의 첨자로 이용한 것이다. 입력한 수와 이전 입력한 수의 대소를 비교하여 큰 수를 max에 저장하고 이때의 배열 첨자를 flag에 저장해 두도록 하였다. 최댓값이 입력된 수의 차례를 출력할 때 +1
을 해 주어야 한다는 점에 유의하자.
소스 코드 C
#include <stdio.h>
int main(int argc, char *argv[])
{
int nums[9];
int flag, i, max = 0;
for (i = 0; i < 9; ++i) {
scanf("%d", &nums[i]);
if (max < nums[i]) {
max =nums[i];
flag = i;
}
}
printf("%d\n", max);
printf("%d\n", flag + 1);
return 0;
}
굳이 배열을 사용하지 않고 아래와 같이 코딩할 수 있다. 이때는 for 문이 아닌 while 문을 이용했고 정수형 변수를 4개만 이용하였다. 메모리 사용에서면 차이가 있을뿐이다.
int num, flag, max = 0;
int times = 0;
while (times < 9) {
scanf("%d", &num);
if ( max < num) {
max = num;
flag = times;
}
times++;
}
소스 코드 Python
max_num = 0
for i in range(1, 10):
num = int(input())
if max_num < num:
max_num = num
flag = i
print(max_num)
print(flag)
입력을 리스트에 넣어서 내장 함수 max()를 사용하는 방법도 있으나 최댓값이 입력된 차례를 구하기 위해서는 리스트 원소의 위치를 따로 구해야 한다는 점에서 위 코드와 비교해 큰 이점이 있을 거 같지는 않다.
'Python > 심사문제' 카테고리의 다른 글
백준(BAEKJOON): 숫자의 개수(2577번) (0) | 2020.01.08 |
---|---|
백준(BAEKJOON): 음계(2920번) (0) | 2020.01.07 |
백준(BAEKJOON): 최소, 최대(10818번) (0) | 2020.01.03 |
백준(BAEKJOON): 더하기 사이클(1110번) (0) | 2019.12.20 |
백준(BAEKJOON): A + B (10950번) (0) | 2019.12.15 |
- Total
- Today
- Yesterday
- 리찬규
- PyQt5
- BOJ
- word
- tips
- 소수
- 유래
- locallibrary
- baekjoon
- Python
- QLineEdit
- books
- 북한말
- 백준
- NK
- C
- QLabel
- 리규찬
- 어원
- Mac
- words
- QtDesigner
- MacOS
- django
- QGridLayout
- setText()
- Tistory
- QComboBox
- judge
- python3
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |