1431번: 시리얼 번호
첫째 줄에 기타의 개수 N이 주어진다. N은 1,000보다 작거나 같다. 둘째 줄부터 N개의 줄에 시리얼 번호가 하나씩 주어진다. 시리얼 번호의 길이는 최대 50이고, 알파벳 대문자 또는 숫자로만 이루
www.acmicpc.net
문제 해설:
import sys
N = int(sys.stdin.readline()) # 개수 입력받기
serials = list(sys.stdin.readline().strip() for _ in range(N)) # 시리얼 입력받기
# 시리얼의 숫자 계산
def hap(letter):
num = 0
for i in range(len(letter)):
if letter[i].isdigit(): # 숫자인지 확인
num = num + int(letter[i])
return num
# 정렬 -> 기준: 1)길이 2)숫자계산 3) 글자
serials.sort(key = lambda x:(len(x), hap(x), x))
# 출력
for i in range(N):
print(serials[i])
포인트:
1. 숫자인지 확인: isdigit()
2. 정렬: .sort()
3. 정렬 기준: key=lambda x: (적용할 기준들)
느낀점:
사실 3시간 가까이 잡았는데도 자꾸 꼬여서 검색을 했다. 보고나니 핵심 코드들이 10줄도 안되더라.......
난 30줄 가까이 되었는데ㅠㅠㅠㅠ 아무래도 코딩문제들을 C로 연습하다가 Python으로 하려니깐 라이브러리를 안 쓰고 직접 구현하려다보니 코드가 길고 복잡해진것 같다. 알고보면 엄청 유용한 Python 라이브러리들을 보니 약간 허탈하기도 하면서 실제 코딩테스트에서는 이런 라이브러리를 써도 되나.. 싶기도 하다. 이렇게 배우면서 실력이 느는 거겠지? 이렇게 유용한 방법론들은 잘 기억해두어야겠다!
'코딩 연습 > Python' 카테고리의 다른 글
완주하지 못한 선수 (0) | 2021.07.05 |
---|---|
5단계 배열 (0) | 2021.06.28 |
구현 17413번 (0) | 2021.03.01 |
그래프 알고리즘 2606번 (0) | 2021.03.01 |
Python 입력: sys.readline() 정리 (0) | 2021.02.05 |