문제
9개의 서로 다른 자연수가 주어질 때, 이들 중 최댓값을 찾고 그 최댓값이 몇 번째 수인지를 구하는 프로그램을 작성하시오.
예를 들어, 서로 다른 9개의 자연수
3, 29, 38, 12, 57, 74, 40, 85, 61
이 주어지면, 이들 중 최댓값은 85이고, 이 값은 8번째 수이다.
입력
첫 째 줄부터 아홉 번째 줄까지 한 줄에 하나의 자연수가 주어진다. 주어지는 자연수는 100 보다 작다.
출력
첫째 줄에 최댓값을 출력하고, 둘째 줄에 최댓값이 몇 번째 수인지를 출력한다.
정답비율
50.40%
lst = list()
for _ in range(9) :
lst.append(int(input()))
max_n = lst[0]
max_i = 1
for i in range(1, 9) :
if max_n < lst[i] :
max_n = lst[i]
max_i = i+1
print(max_n)
print(max_i)
코드를 짜는데는 오래 걸리지 않았다. 이전에 풀었던 10818번과 유사했으며, 다른 점은 각기 다른 줄에 숫자를 입력받는 다는 것과 인덱스값을 출력하라는 것이다. 각기 다른 줄이므로 리스트에 추가할때마다 편하게 int로 변환하였다. 1차원 배열문제이므로 최대한 메소드없이 풀어보려고 했다.
처음에 max_i 를 0으로 설정해서 계속 틀렸다는 메세지가 떠서 당황하였고, 다양한 반례를 작성하다가 첫번째 수가 가장 클 경우 0이 출력됨을 발견하였다. max_i는 1부터 시작하여야 한다.
다만 이 문제는 리스트의 메소드를 사용해서 간단히 풀 수 있는 문제이다.
lst = list()
for _ in range(9) :
lst.append(int(input()))
print(max(lst))
print(lst.index(max(lst))+1)
max함수를 통해 리스트 내에 가장 큰 값을 불러올 수 있다. index메소드를 통해 인덱스값을 불러올 수 있으므로 +1을 해주면 간단하게 작성 가능하다.
참고
'Problem Solving > Baekjoon Online Judge' 카테고리의 다른 글
<1차원 배열> 3052번 나머지 with 파이썬 (0) | 2020.10.26 |
---|---|
<1차원 배열> 2577번 숫자의 개수 with 파이썬 (0) | 2020.10.23 |
<1차원 배열> 10818번 최소, 최대 with 파이썬 (0) | 2020.10.19 |
<while문> 1110번 더하기 사이클 with 파이썬 (0) | 2020.10.16 |
<while문> 10951번 A+B -4 with 파이썬 (0) | 2020.10.14 |