2019.07.16
해커랭크 알고리즘 문제 (lv1)
- 2번째로 높은 수 구하기(runner-up score)
문제 설명
- 먼저 하나의 정수를 줄 것이다.( 2 <= n <= 10)
- 그리고 그 정수만큼의 list를 넣는다.
- 그 해당 list에서 2번째로 큰 수를 찾아내야 한다.
예시
input()
5
input()
2 3 6 6 5
output()
5
나의 풀이 방법
의식의 흐름
- 먼저 input 창으로 정수를 한개 받는다.
- 그리고 또 하나의 input창으로 첫 번째 입력한 정수 갯수만큼을 입력 받는다.
- 해당 입력 받은 것을 list로 만든다.
- list를 돌면서 가장 큰 숫자를 제거한다.
- 제거된 list중에서 가장 큰 숫자를 반환한다.
코드
if __name__ == '__main__':
n = int(input())
arr = list(map(int, input().split()))
largest = max(arr)
for i in range(n):
if largest == max(arr):
arr.remove(max(arr))
print(max(arr))
- map을 써서 해당 input에 대해서 int형으로 받는다.
- map의 기본 양식
- map(f, iterable) #mapobject를 반환한다. map은 함수와 iterable을 받는다.
- map 앞에 list를 붙이면 한번에 list로 받아 올 수 있다.
- 그리고 처음 받아왔던 n만큼 돌면서 최대값들을 arr에서 remove해준다.
- 항상 포문을 쓸 때는 해당 i가 안에서 쓰여야 된다고 생각했는데 절대 그럴 필요가 없다는 것을 깨달았다.
- 마지막으로 남은 list에서 최대값을 반환해준다.