https://programmers.co.kr/learn/courses/30/lessons/17686?language=python3
코딩테스트 연습 - [3차] 파일명 정렬
파일명 정렬 세 차례의 코딩 테스트와 두 차례의 면접이라는 기나긴 블라인드 공채를 무사히 통과해 카카오에 입사한 무지는 파일 저장소 서버 관리를 맡게 되었다. 저장소 서버에는 프로그램
programmers.co.kr
최종 코드
GitHub - hwayeon351/Programmers-Algorithms: 프로그래머스 알고리즘 소스 코드 모음
프로그래머스 알고리즘 소스 코드 모음. Contribute to hwayeon351/Programmers-Algorithms development by creating an account on GitHub.
github.com
def solution(files):
answer = []
filenames = []
for idx, file in enumerate(files):
head = ""
for i in range(len(file)):
if file[i].isdigit():
break
head += file[i]
number = ""
for j in range(i, len(file)):
if file[j].isdigit():
number += file[j]
else: break
number = number.lstrip('0')
filenames.append([idx, head.lower(), int(number) if len(number) > 0 else 0])
filenames.sort(key = lambda x:(x[1], x[2], x[0]))
for file in filenames:
answer.append(files[file[0]])
return answer
풀이 과정
풀이 시간 45분
def solution(files):
answer = []
#filenames[i] = [files의 idx, HEAD, NUMBER]
filenames = []
for idx, file in enumerate(files):
#HEAD 구하기
head = ""
for i in range(len(file)):
if file[i].isdigit():
break
head += file[i]
#NUMBER 구하기
number = ""
for j in range(i, len(file)):
if file[j].isdigit():
number += file[j]
else: break
#왼쪽에 0이 있는 경우, 제거
number = number.lstrip('0')
#filenames에 추가하기
#만약, NUMBER가 '0', '00', '000', '0000', '00000'인 경우 lstrip('0')으로 인해 ''이므로, 예외처리
filenames.append([idx, head.lower(), int(number) if len(number) > 0 else 0])
#HEAD를 기준으로 오름차순 정렬, NUMBER를 기준으로 오름차순 정렬, 입력 순서를 기준으로 오름차순 정렬
filenames.sort(key = lambda x:(x[1], x[2], x[0]))
for file in filenames:
answer.append(files[file[0]])
return answer
#시간복잡도 = O(nlog n), 공간복잡도 = O(n)
참고
- 1. N진수 게임 - 2022.03.30 - [코테 노트/프로그래머스] - Level 2 [3차] n진수 게임 <2018 KAKAO BLIND RECRUITMENT> Python 3
Level 2 [3차] 압축 <2018 KAKAO BLIND RECRUITMENT> Python 3
https://programmers.co.kr/learn/courses/30/lessons/17684?language=python3 코딩테스트 연습 - [3차] 압축 TOBEORNOTTOBEORTOBEORNOT [20, 15, 2, 5, 15, 18, 14, 15, 20, 27, 29, 31, 36, 30, 32, 34] program..
hwayomingdlog.tistory.com
Level 2 [3차] 방금그곡 <2018 KAKAO BLIND RECRUITMENT> Python 3
https://programmers.co.kr/learn/courses/30/lessons/17683?language=python3 코딩테스트 연습 - [3차] 방금그곡 방금그곡 라디오를 자주 듣는 네오는 라디오에서 방금 나왔던 음악이 무슨 음악인지 궁금해질 때..
hwayomingdlog.tistory.com
- 5. 자동완성
'코테 노트 > 프로그래머스' 카테고리의 다른 글
Level 3 매칭 점수 <2019 KAKAO BLIND RECRUITMENT> Python 3 (0) | 2022.04.01 |
---|---|
Level 2 [3차] n진수 게임 <2018 KAKAO BLIND RECRUITMENT> Python 3 (0) | 2022.03.30 |
Level 2 [3차] 압축 <2018 KAKAO BLIND RECRUITMENT> Python 3 (0) | 2022.03.28 |
Level 2 [3차] 방금그곡 <2018 KAKAO BLIND RECRUITMENT> Python 3 (0) | 2022.03.25 |
Level 3 풍선 터트리기 Python 3 (0) | 2022.03.23 |