https://school.programmers.co.kr/learn/courses/30/lessons/17687
문제 요약
- 사람들이 번갈아가면서 숫자를 하나씩 말하는 게임
- 숫자가 10 이상인 경우, 한 자리씩 끊어서 말한다.
ex. 123 이면, 1, 2, 3
- 특정 위치의 사람이 말해야 하는 숫자 순서대로 출력
입력 값
- 진법 n
- 미리 구할 숫자의 개수 t
- 게임 참여 인원 m
- 튜브 순서 p
풀이 방법
- 10진법 숫자를 n진법으로 변환하는 함수 구현 get_convert
- 출력 형식에서 10~15는 대문자 A~F 으로 출력해야 한다.
- 10진법 이상에서만 변환된다.
- 튜브가 말해야 하는 순서를 구해줘서 배열에 담는다.
- 0부터 최대 값까지 숫자를 변환해주고, 튜브가 말해야 하는 순서인 경우 출력 배열에 담아준다.
def get_convert(num, base):
if num == 0:
return 0
temp = ''
while num > 0:
num, mod = divmod(num, base) # divmod 몫, 나머지
if base > 10 and 10 <= mod <= 15:
temp += "ABCDEF"[mod % 10] # 10 ~ 15는 대문자 ABCDEF 변경
else:
temp += str(mod)
return temp[::-1]
def solution(n, t, m, p): # 진법, 미리 구할 숫자의 개수, 게임 참여 인원, 튜브 순서
answer = ''
order = []
numbers = []
# 말해야 하는 숫자 순서
for i in range(t):
order.append(p+m*i)
max_value = order[-1]
idx = 1
for i in range(max_value):
change_num = str(get_convert(i, n)) # 바꾼 숫자
for j in change_num:
if idx in order:
answer += j
idx += 1
return answer
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[Python] 프로그래머스 Level 1 신규 아이디 추천, 정규 표현식 (0) | 2022.09.23 |
---|---|
[Python] 프로그래머스 Level 2 두 큐 합 같게 만들기, deque (0) | 2022.09.23 |
[Python] 프로그래머스 Level 2 괄호 변환 (0) | 2022.09.11 |
[Python] 프로그래머스 Level 2 메뉴 리뉴얼, Counter, combinations (0) | 2022.09.11 |
[Python] 프로그래머스 Level 2 오픈 채팅방 (0) | 2022.09.11 |