Byeonguk Kim

안녕하세요. 29살의 조금은 늦은 나이로 새롭게 개발자로 시작하는 신입 개발자입니다. 포트폴리오 [https://deaguowl.github.io]

알고리즘 09. runner-up score 구하기

16 Jul 2019 » Algorithm

2019.07.16

해커랭크 알고리즘 문제 (lv1)

  • 2번째로 높은 수 구하기(runner-up score)

문제 설명

  • 먼저 하나의 정수를 줄 것이다.( 2 <= n <= 10)
  • 그리고 그 정수만큼의 list를 넣는다.
  • 그 해당 list에서 2번째로 큰 수를 찾아내야 한다.

예시


input()
5
input()
2 3 6 6 5

output()
5


나의 풀이 방법

의식의 흐름

  1. 먼저 input 창으로 정수를 한개 받는다.
  2. 그리고 또 하나의 input창으로 첫 번째 입력한 정수 갯수만큼을 입력 받는다.
  3. 해당 입력 받은 것을 list로 만든다.
  4. list를 돌면서 가장 큰 숫자를 제거한다.
  5. 제거된 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에서 최대값을 반환해준다.