https://school.programmers.co.kr/learn/courses/30/lessons/389481
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
1. 주문은 알파벳 소문자로 구성되어 있고, 11글자 이하이다.
2. 주문 리스트는 주문의 길이 오름차순, 알파벳순 오름차순으로 정렬되어 있다.
모든 주문 리스트 = ['a', 'b', 'c', ... , 'aa', 'ab', 'ac', ... 'aaa', 'aab', 'aac', ... , 'zzzzzzzzzzz']
3. 금지된 주문 목록이 주어질 때, 금지된 주문을 제외한 주문중 n번째 주문을 구하여라
1. 모든 주문 리스트에서 n번째 주문을 찾는다.
2. 금지된 주문들을 순회하며 만약 현재 주문이 금지된 주문이면 다음 주문으로 변경한다.
def solution(n, bans):
# 금지된 주문 삭제전 n번째 주문 구하기
주문 = ''
주문번호 = n
while 주문번호 > 0:
mod = (주문번호 - 1) % 26
주문 = chr(mod + 97) + 주문
주문번호 = (주문번호 - 1) // 26
# 삭제된 주문만큼 다음 주문처리
bans.sort(key=lambda x: (len(x), x)) # 정렬 필요
for ban in bans:
if len(ban) < len(주문) or (len(ban) == len(주문) and ban <= 주문):
주문 = 다음주문(주문)
else:
break
return 주문
def 다음주문(주문):
if 주문 == '':
return 'a'
마지막글자 = 주문[-1]
나머지부분 = 주문[:-1] if len(주문) > 1 else ''
if 'a' <= 마지막글자 <= 'y':
return 나머지부분 + chr(ord(마지막글자) + 1)
return 다음주문(나머지부분) + 'a'
[프로그래머스] 388353. 지게차와 크레인 | Python3, Level2, BFS (0) | 2025.04.16 |
---|---|
[프로그래머스] 389479. 서버 증설 횟수 | Python3, Level2, 단순 구현 (0) | 2025.04.15 |
[프로그래머스] 388351. 유연근무제 | Python3, Level1, 단순 구현 (0) | 2025.04.14 |
[프로그래머스] 389478. 택배 상자 꺼내기 | 파이썬3, 구현 (1) | 2025.04.14 |
[프로그래머스] 301651. 멸종위기의 대장균 찾기 | MySQL, 재귀 쿼리 (0) | 2025.04.10 |