간단한 문제다. 하지만 실수를 하는 바람에 제출을 하고 몇개의 테스트 케이스에서 틀리고 점수가 깎였다:
if __name__ == '__main__':
n = int(input())
arr = list(map(int, input().split()))
set_arr = set(arr)
list_set_arr = list(set_arr)
sorted_list = sorted(list_set_arr)
if len(sorted_list) == 1:
print(sorted_list[0])
else:
print(sorted_list[-2])
arr을 set로 만들어서 중복되는 숫자들은 없애주고, 이 set를 다시 리스트로 만들어서 sorted() 함수를 통해 오름차순으로 정렬을 해준다 (이유는 밑에서 설명하겠다.) 이후 이 리스트의 길이가 1이라면, 리스트에 들어가있는 하나의 숫자만 출력을 하고, 아니라면 뒤에서 2번째 숫자를 출력하도록 했다.
set에서 리스트로 바꾼 후, 다시 sorted() 함수로 정리하는 이유는 다음과 같다:
>>> arr = list(map(int, input().split()))
-100 -99 -88 3 2 100
>>> arr
[-100, -99, -88, 3, 2, 100]
>>> set_arr = set(arr)
>>> set_arr
{2, 3, 100, -88, -100, -99}
위의 코드에서 보듯이, 순서가 매우 이상하게 나온다. 따라서 이를 다시 리스트로 바꾸고, 또 다시 오름차순으로 정렬을 해주어야 한다.
'알고리즘 테스트 > Hackerrank 문제풀이 및 해설' 카테고리의 다른 글
<Hackerrank 문제풀이: 파이썬> Finding the percentage (0) | 2020.11.14 |
---|---|
<Hackerrank 문제풀이: 파이썬> Nested Lists (0) | 2020.11.13 |
<Hackerrank 문제풀이: 파이썬> Inner and Outer (0) | 2020.11.12 |
<Hackerrank 문제풀이: 파이썬> Loops (0) | 2020.11.12 |
<Hackerrank 문제풀이: 파이썬> Python: Division (0) | 2020.11.12 |