티스토리 뷰

최댓값 

문제

9개의 서로 다른 자연수가 주어질 때, 이들 중 최댓값을 찾고 그 최댓값이 몇 번째 수인지를 구하는 프로그램을 작성하시오.

예를 들어, 서로 다른 9개의 자연수

3, 29, 38, 12, 57, 74, 40, 85, 61

이 주어지면, 이들 중 최댓값은 85이고, 이 값은 8번째 수이다.

입력

첫째 줄부터 아홉 번째 줄까지 한 줄에 하나의 자연수가 주어진다. 주어지는 자연수는 100 보다 작다.

출력

첫째 줄에 최댓값을 출력하고, 둘째 줄에 최댓값이 몇 번째 수인지를 출력한다.

내 풀이

import sys

arr = list(map(int, sys.stdin.readlines()))

max_num = max(arr)
print(max_num)
print(arr.index(max_num)+1)

틀렸던 내 풀이

 

import sys

arr = list(map(int, sys.stdin.readlines().split()))

max_num = max(arr)
print(max_num)
print(arr.index(max_num)+1)

sys.stdin.readline() 이나 sys.stdin.readlines() 를 이제는 다 안다고 생각했었는데 계속 런타임 에러 (AttributeError) 나서 애 먹었다.

arr = list(map(int, sys.stdin.readlines().strip())) 을 하면 여러 줄로 입력된 정수들을 포함한 리스트를 만들 수 있다고 생각했는데(구글링해봤을 때도 이렇게 나왔던 것 같아서..)

사실, AttributeError 오류가 발생하는 이유는 readlines() 메소드가 반환하는 값은 리스트(list)인데, 리스트에는 split() 메소드나 strip() 메소드가 없기 때문이라고 한다.

더보기

AttributeError 오류가 발생하는 이유는 readlines() 메소드가 반환하는 값은 리스트(list)인데, 리스트에는 split() 메소드나 strip() 메소드가 없기 때문입니다.

split() 메소드는 문자열(string) 타입의 메소드이기 때문에, readlines()로 읽어들인 각각의 라인은 여전히 문자열(string)입니다. 따라서 readlines()로 읽어들인 결과를 split()으로 분리하려고 하면 AttributeError 오류가 발생합니다.

올바른 코드는 readlines()로 읽어들인 결과에 대해서 strip() 메소드를 적용해야 합니다. 이렇게 하면 각 라인의 양쪽 공백을 제거하고 숫자 문자열만을 추출할 수 있습니다. 이후에 map() 함수와 int() 함수를 이용해 문자열을 정수로 변환합니다. 변환한 결과는 리스트(list)로 반환되기 때문에 따로 list() 함수를 사용할 필요가 없습니다.

왜 오류가 나는지 도저히 모르겠을 때 ChatGPT에게 물어보면 도움되는 것 같당.

GPT가 수정해준 내 풀이

import sys

arr = list(map(int, [line.strip() for line in sys.stdin.readlines()]))

max_num = max(arr)
print(max_num)
print(arr.index(max_num) + 1)

sys.stdin.realines()가 반환하는 리스트 내의 요소들에 대해서 strip()나 split()을 사용하면 된다.

그렇지만 우리가 필요한 건 정수이기 때문에 그냥 맨 위에 내 코드처럼 int()를 씌워버리면,

sys.stdin.realines()가 불러온 개행문자들이 사라지니까 이 방법이 더 쉬운 듯..

정답 풀이

a=[int(input()) for i in range(9)]
print(max(a))
print(a.index(max(a))+1)

이 문제를 꼭 sys.stdin.readlines()로 풀고 싶어서 아등바등했었는데,,

맞힌 사람들 코드를 보니 이게 훨 간단한 것 같당.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/08   »
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 29 30
31
글 보관함