-
[Python] CodeUp : 기초 100제 6,094 : 이상한 출석 번호 부르기3코딩테스트/CodeUp 2024. 4. 22. 16:28
https://codeup.kr/problem.php?id=6094
문제는 위 링크 참고.
[문제 풀기 전 생각한 부분]
1. 사용자로부터 입력을 두 줄에 걸쳐 받고
2. sort()을 이용해 정렬
3. 0번째 인덱스를 출력하면 되겠다.
[my_code]
n = int(input()) # 입력을 받고 // 문제의 의도랑 다르게 풀고 있단 생각이 들지만,,,일단 맞추는거에 포커싱 a = map(int,input().split()) # 공백을 기준으로 입력을 받고 ''' a = [5,1,2,3] 이라면 a.sort() 함으로써 a = [1,2,3,5] 가 됨 ''' a.sort() print(a[0]) # a[0] 즉, 제일 a의 제일 첫 번째 값 출력
[문제점]'map' object has no attribute 'sort;라고 출력됨을 볼 수 있다.
map은 리스트를 리턴해주지 않는다. sort는 list의 속석이므로 오류가 발생하는 것이다.
[문제점 해결]
a = list(map(int, input().split(' '))) a.sort()
- 받은 a 값을 list로 변환한 뒤 sort 하거나 (입력된 리스트를 직접 변경하여 정렬)
a = sorted(map(int, input().split(' ')))
- 입력된 숫자들을 공백을 기준으로 나누어 map() 함수를 사용하여 각 요소를 정수로 변환한 후, sorted()함수를 사용하여 정렬된 리스트를 반환함. 이 방식은 입력된 리스트를 직접 변경하지 않고 새롭게 정렬된 리스트를 반환하는 차이.
- 이건 내가 푼 코드랑 차이를 잘 모르겠어서 좀 더 다루어 보겠다. sort()랑 sorted() 차이가 무엇인가?
# sort() 와 sorted() 차이 in Python a = [3,2,1] print('a : ',a) a1 = a.sort() print('a :',a) print('a1 :',a1) b = [3,2,1] b2 = sorted(b) print('b:', b) print('b2:', b2)
# 출력 값 a : [3, 2, 1] a : [1, 2, 3] a1 : None b: [3, 2, 1] b2: [1, 2, 3]
- sort() 는 입력된 list들을 직접 변경함을 알 수 있다. a와 a1의 차이
- a1은 None을 리턴하는 걸 볼 수 있다.
- 반면에 sorted() 는 직접 변경하지 않고 새롭게 정렬된 리스트를 반환한다.
결론 : sort()는 원본 바꿈 sorted()는 원본 그대로 새로운 리스트 반환
문제 해결 코드는 아래 참고
# 해답 코드 n = int(input()) a = sorted(map(int,input().split())) print(a[0])
+ 추가로 문제의 의도에 맞게 다시 풀어보자
n = int(input("학생 수를 입력하세요: ")) # 학생 수 입력 # 출석 번호 입력 받기 attendance_numbers = list(map(int, input("출석 번호를 입력하세요 (공백으로 구분하여): ").split()[:n])) # 출석 번호 중 가장 작은 번호 출력 min_attendance_number = min(attendance_numbers) print("가장 빠른 출석 번호:", min_attendance_number)
- 이번에는 min()을 이용해서 출력해 보았다.
'코딩테스트 > CodeUp' 카테고리의 다른 글
[Python] 1412 : 알파벳 개수 출력하기 (0) 2024.05.20 [Python] 기초 100제 : 바둑판에 흰 돌 놓기 (0) 2024.04.22 [Python] CodeUp : 기초 100제 6,092 이상한 출석 번호 부르기1 (0) 2024.04.19 [Python] CodeUp 기초 100제 6,082 3 6 9 게임의 왕이 되자 (0) 2024.04.18 [Python] CodeUp : 기초 100제 6,081 16진수 구구단 출력하기(py) (0) 2024.04.17