문제
풀이
나는 이 문제를 풀때 range() 를 10으로 설정했었다.
9개의 숫자라고 쓰여있어 0-9 까지를 생각했던 것인데 곰곰히 생각해보니 0-8이어야 9개의 숫자이다..
그래도 리스트 컴프리헨션을 사용하는 것이 조금 더 파이썬 스러운 코드라고 생각되어 간단하게 적은 것이 다행이라고 생각한다.
num = [int(input()) for i in range(9)]
print(max(num))
print(num.index(max(num))+1)
2562 번 문제를 두 번의 for 문을 돌려 풀어야 하는 문제인 것일까 하고 생각을 했다.
max()는 잊고 있었지만, .index( ) 라는 인덱스의 번호를 알 수 있는 문법이 있다는 것을 알게 되었다.
list.index() : index()는 리스트 중에서 특정한 원소가 몇 번째에 처음으로 등장했는지를 알려준다. 하지만 중복되는 숫자가 존재한다면 앞에 위치한 한 중복 숫자의 인덱스 번호를 알려준다.
만약? 정렬의 다른 방법을 하려면?
교육을 하며 이러한 문제를 푼 적 있었다.
[문제] n 번째로 큰 수 찾기
사용자로부터 정수를 반복적으로 입력받는다.
반복 입력은 0을 입력하면 반복을 종료한다.
이 후 검색할 순위를 입력 받으면 순위의 숫자를 출력하되 입력받은 값의 범위를 벗어난 순위를 입력하면 순위를 다시 입력받는다.
[예시]
점수를 입력하세요(종료 0)
5
4
6
2
1
0
검색할 순위: -4
리스트의 범위를 벗어났습니다. 다시 입력하세요: 1
1번째로 큰 수는 6입니다.
data_list = []
print("점수를 입력하세요(종료 0)")
while True:
data = int(input())
if data == 0: break
data_list.append(data)
data_list.sort(reverse = True)
while True:
rank = int(input("검색할 순위:"))
if 0 < rank <= len(data_list):
break
else:
print("리스트의 범위를 벗어났습니다. 다시입력하세요:")
print(f"{rank}번째로 큰 수는 {data_list[rank-1]} 입니다. ")
print(data_list[rank])
해당 문제 처럼 sort 를 통해 정렬한 후 reverse = True 를 하여 오름차순으로 리스트를 재정렬한다.
이후 가장 리스트의 끝 값을 출력 후 인덱스 번호를 알아오기 위해 list.index() 의 방법도 있겠지만, 해당 리스트의 길이를 재어 출력하면 된다.
'개인 공부 > 파이썬' 카테고리의 다른 글
[프로그래머스 / 파이썬] 자릿수 더하기 , 문자열 내 p와 y의 개수 (0) | 2024.07.24 |
---|---|
[백준알고리즘] 10818번 최소, 최대 (0) | 2023.11.07 |
[백준알고리즘] 10871번 X보다 작은 수 (0) | 2023.11.02 |
[백준알고리즘] 10807번 개수 세기 (0) | 2023.10.31 |