반응형
문제: https://school.programmers.co.kr/learn/courses/30/lessons/17686
풀이:
알고리즘은 아래와 같다.
1. head, number, tail로 분리
2. sorted의 lambda로 다중 정렬 기준 주기
3. 비교시에 head의 경우 대소문자 구분 없는 것으로 비교하고 출력 때는 원래 것, number도 마찬가지로 비교는 숫자로 바꿔서 비교하고 출력할 때는 다시 원래 것 (문자열)로 해야 하기 때문에 튜플로 묶어서 저장한다.
4. 비교시에는 튜플의 1번째 원소를 기준으로 비교하고 정렬된 후 출력에는 튜플의 0번째 원소를 출력하도록 한다.
def solution(files):
answer = []
info = []
for f in files:
h, n, f = seperate(f)
info.append([(h, h.lower()),(n, int(n)),f])
# 비교하는부분 - 비교시에는 소문자로 바꾼값을 기준으로 정렬, 정수값을 기준으로 정렬 (튜플의 1번쨰 원소)
info = sorted(info, key=lambda x:(x[0][1], x[1][1]))
print(info)
for i in info:
temp = ''
for j in range(len(i)):
if j!=2:
temp += i[j][0]
else:
temp += i[j]
answer.append(temp)
return answer
def seperate(fileName):
head = getHead(fileName)
h = len(head)
number = getNumber(fileName[h:])
n = len(number)
tail = fileName[n+h:]
print(tail)
return head, number, tail
def getHead(string):
head = ''
for s in string:
if not s.isdigit():
head += s
else:
return head
def getNumber(string):
num = ''
for s in string:
if s.isdigit():
num += s
else:
return num
else:
return num
반응형
'Python 코딩테스트' 카테고리의 다른 글
DP(다이나믹 프로그래밍): 백준 11726 파이썬 (2) | 2022.10.31 |
---|---|
DP(다이나믹 프로그래밍): 백준 9095 파이썬 1,2,3 더하기 (0) | 2022.10.27 |
BFS: 백준 13549 숨바꼭질 3 (0) | 2022.10.21 |
[프로그래머스] 튜플 파이썬 (0) | 2022.10.19 |
그리디: 백준 1931 파이썬 회의실 배정 (1) | 2022.10.15 |