[python] 백준 2562
- 오답 이유 찾기
https://www.acmicpc.net/problem/2562
2562번: 최댓값
9개의 서로 다른 자연수가 주어질 때, 이들 중 최댓값을 찾고 그 최댓값이 몇 번째 수인지를 구하는 프로그램을 작성하시오. 예를 들어, 서로 다른 9개의 자연수 3, 29, 38, 12, 57, 74, 40, 85, 61 이 주어
www.acmicpc.net
#시도1
import sys
data=[sys.stdin.readline() for i in range(9)]
print(max(data))
print(data.index(max(data))+1)
이렇게 했더니 출력될 때
85
8
이런식으로 출력되길래
#시도2
import sys
data=[sys.stdin.readline() for i in range(9)]
m = max(data)
print(m,end='')
print(data.index(m)+1)
end=''를 이용해서
85
8
출력 형식을 맞춰주었다
근데 또 틀려서 반례를 찾아 봤더니
1
2
3
4
5
6
7
8
10
을 입력하면 출력이 10\n10 이 아니라 8\n8로 나온다
근데 왜 그렇게 나오나... int 형변환이 문젠가하고 질문 했더니
답변
>> data배열에 값을 숫자가 아닌 str 타입으로 저장하고 있기 때문입니다.
str타입의 크기비교는 사전 순서를 따릅니다. 즉 '2'보다 '10'이 더 작습니다.
int형으로 저장하세요.
이래서였다
명쾌한 답변...
https://western-sky.tistory.com/114
프로그래머스 - 가장 큰 수 (정렬)
🔸 문제 해결 방향 문자열 처리를 통해 풀어야한다. 문자열 비교가 어떻기 이루어지는지 숙지할 것 문자열 곱셈을 수행한 뒤 비교한 이유는? 문자열 비교 → 숫자 변환 → 문자열 변환 후 반환
western-sky.tistory.com
문자열 크기 비교하는 것 정리는 이 분이 아주 잘... 정리해주셨기에
#시도3
import sys
data=[]
for i in range(9):
data.append(int(sys.stdin.readline()))
print(max(data))
print(data.index(max(data))+1)
이게 형식은 훨씬 이해 잘 되긴 함
이렇게 해서 맞았습니다를 획득했다
오늘은... 피곤해서 이만할란다