2023. 8. 18. 20:45ㆍ개인활동/코테
i = input; i()
num_list = list(map(int, i().split()))
print(min(num_list), max(num_list))
실화인가...
처음에 min이랑 max 순서 반대로 적어서 틀려버렸다.
앞에 풀었던 두문제보다 이 코드가 실행 시간이 좀 오래 걸려서 당황스러웠지만..
쉽게 성공했다.
숏코드를 보고있는데 시간이 나보다 오래걸리지만 코드 길이가 더 짧은 코드들이 있었다.
내장함수를 사용해서 그런걸까?
그렇다면 가장 짧은 숏코드를 보자
print(min(s:=[*map(int,[*open(0)][1].split())]),max(s))
또 open 함수가 사용되었다.
궁금한 점부터 정리를 해보자.
1. ":="는 무엇인가?
2. "s:="로 사용된 이유는 무엇인가?
3. *map은?
숏코드에서 자주 사용되는 유형들을 보다보니 궁금한 것이 점점 적어지게 된다.
일단 1번부터 훑어보자
1. ":="는 무엇인가?
python 3.8부터 등장한 연산자로 바다코끼리 연산자라고 부르며 대입 연산자라고 한다.
(참고: https://docs.python.org/ko/3/whatsnew/3.8.html)
이 연산자의 목적은 표현식에 이름을 부여하고 재사용할 수 있도록 한다.
(참고: https://int-i.github.io/python/2020-05-29/python-walrus-operator/)
따라서 이 코드에서는 s라는 변수에 뒤에있는 표현식의 결과값을 대입한 것이라고 할 수 있다.
print(min(s:=[*map(int,[*open(0)][1].split())]),max(s))
그리고 s라는 변수를 max에서 재사용한 것이다.
2. "s:="로 사용된 이유는 무엇인가?
이 질문은 1번에서 해결이 되었다.
3. *map은?
또 * 이 아이가 나타났다.
그리고 어떤 분이 정리해주신 글을 찾게되었다. (참고: https://jammdev.tistory.com/39)
이름도 알았다.
Asterisk, 애스터리스크, 별표, *
ㅇㅋ 뇌에 각인시킴
print(min(s:=[*map(int,[*open(0)][1].split())]),max(s))
여기서 일단 unpacking을 위해서 사용된 것은 알겠다.
그 뒤에 open에서도 unpacking을 위해 사용된 것은 알겠는데...
사실 *map보다 궁금한 것은 [] 대괄호를 사용한다고 해서 list로 들어가는가 싶었는데...
unpacking을 했기에 그 요소들이 list의 요소들로 들어가는 것이였다.
unpacking을 안한 상태로 대괄호로 씌워넣으면 아래와 같은 결과값이 나왔다.
(내가 짠 코드를 기준으로 한 것이다. )
i = input; i()
num_list = [map(int, i().split())]
print(min(num_list), max(num_list))
재미있다
업데이트 된 연산자도 알아가고
asterisk의 사용법도 점점 익혀가는 것 같다.
다음엔 asterisk를 사용해 코드를 짜봐야겠다.
'개인활동 > 코테' 카테고리의 다른 글
백준 10813번: 공바꾸기 (0) | 2023.08.20 |
---|---|
백준 10810번: 공넣기 (0) | 2023.08.20 |
백준 2562번: 최댓값 (0) | 2023.08.19 |
백준 10871번: X보다 작은 수 (0) | 2023.08.17 |
백준 10807번 : 개수세기 (0) | 2023.08.16 |