[백준] 2562번 최댓값
백준의 해당 문제는 링크를 통해 들어가서 풀어볼 수 있다.
https://www.acmicpc.net/problem/2562
문제
9개의 서로 다른 자연수가 주어질 때, 이들 중 최댓값을 찾고 그 최댓값이 몇 번째 수인지를 구하는 프로그램을 작성하시오.
예를 들어, 서로 다른 9개의 자연수
3, 29, 38, 12, 57, 74, 40, 85, 61
이 주어지면, 이들 중 최댓값은 85이고, 이 값은 8번째 수이다.
입력
첫째 줄부터 아홉 번째 줄까지 한 줄에 하나의 자연수가 주어진다. 주어지는 자연수는 100 보다 작다.
출력
첫째 줄에 최댓값을 출력하고, 둘째 줄에 최댓값이 몇 번째 수인지를 출력한다.
정답
# 방법 1
list = []
for i in range(9):
i = int(input())
list.append(i)
# 방법 2
list = [int(input()) for _ in range(9)]
print(max(list))
print(list.index(max(list))+1)
공부한 내용
이 문제는 2가지의 방법으로 해결할 수 있다.
먼저, list라는 리스트 객체를 생성한 뒤에 for 반복문으로 9개의 숫자를 한줄에 반복해서 자연수를 입력해주는 코드를 만들어주고, list 객체에 append()를 통해서 값으로 넣어준다. 다음, max를 통해 최댓값을 추출하고, index 값을 활용해서 최댓값이 어디에 있는 출력해준다. 여기서 1을 더하는 것은 파이썬에서 index는 0부터 시작하기 때문이다.
두번째로는 comprehension을 사용하는 것이다. comprehension이란, 포함, 포괄이라는 의미로써 기존의 반복가능한 객체를 기반으로 새로운 리스트나 집합, 딕셔너리 등을 간결하게 만들 수 있는 표현식을 말한다.
처음에 사용한 for 구문을 한줄로 만들 수 있는데, 아래와 같다.
[int(input()) for _ in range(9)]
리스트로 만들기 때문에 []로 묶어주고, 결과식 뒤에 for 반복문을 작성해주면 된다. 이렇게 9번 반복하면서 list 객체에 숫자를 입력해주고, 처음과 같은 방식으로 출력해주면 최댓값과 최댓값이 위치한 곳을 출력할 수 있게 된다.