728x90
https://school.programmers.co.kr/learn/courses/30/lessons/17687#
- 풀이
- 참가인원(m)이 t바퀴 : m*t가 최대 100,000이므로 게임에 나올 수 있는 수 다 구한 뒤 튜브가 말할 수 구하기!
- 코드
# i를 n진법으로 변환하기
def change(n,i):
box = {2:'b',8:'o',16:'x'}
if n in box:
return format(i,box[n]).upper()
if i == 0:
return '0'
result = ''
nn = '0123456789ABCDEF'
while i > 0:
# i를 n으로 나눈 몫 : a
# i를 n으로 나눈 나머지 : b
a,b = divmod(i,n)
i = a
result += nn[b]
return result[::-1]
def solution(n, t, m, p):
# 게임에 나오는 수
game = ''
i = 0
while len(game) < t*m:
game += change(n,i)
i += 1
# 튜브가 말해야 하는 숫자
answer = ''
for j in range(p-1,m*t,m):
answer += game[j]
return answer
728x90
반응형
'TIL - 프로그래밍 > Python 알고리즘' 카테고리의 다른 글
[프로그래머스] 야근 지수 - Python (0) | 2023.02.28 |
---|---|
[230228] n진법 구하기(with divmod) - Python (0) | 2023.02.28 |
위상 정렬(Topology Sort) 알고리즘 (1) | 2022.12.10 |
벨만 포드 알고리즘 (0) | 2022.12.04 |
[백준] 12851. 숨바꼭질 2 - Python (0) | 2022.10.14 |
댓글