728x90
https://programmers.co.kr/learn/courses/30/lessons/17687
접근
먼저 10진수로 진행했을 때 가장 마지막에 말해야하는 숫자까지 n진수로 변환하여 특정 문자열에 저장한다. 이후 n진수로 게임을 진행했을 때 말해야하는 범위까지 입력된 사용자의 차례의 수를 최종해에 대입한다.
구현
- 아래의 함수는 10진수를 n진수로 변환하는 함수이다.
- s에 아래와 같이 초기화를 시킨 후에 number를 n으로 나눈 나머지를 인덱스로 사용하여 s의 문자에 접근한다.
- 인덱스로 접근한 문자를 result에 대입하는데 n진수로 변환했을 때 뒤집어진 문자로 반환되지 않도록 아래와 같이 추가한다.
def trans_n_nary(n, number):
s = '0123456789ABCDEF'
result = ''
if number == 0:
return '0'
while number:
result = s[number % n] + result
number //= n
return result
- 10진수로 게임을 진행했을 때 t*m의 숫자까지 진행되기 때문에 0부터 해당 숫자까지 n진수로 변환한다.
- 이후 n진수로 변환한 것을 text에 모두 저장하였고
- text를 탐색하여 입력된 사용자의 순서에 맞게 answer에 추가한다.
def solution(n, t, m, p):
answer = ''
text = ''
for i in range(t*m):
text += trans_n_nary(n, i)
for i in range(p-1, t*m, m):
answer += text[i]
return answer
전체 코드
def trans_n_nary(n, number):
s = '0123456789ABCDEF'
result = ''
if number == 0:
return '0'
while number:
result = s[number % n] + result
number //= n
return result
def solution(n, t, m, p):
answer = ''
text = ''
for i in range(t*m):
text += trans_n_nary(n, i)
for i in range(p-1, t*m, m):
answer += text[i]
return answer
'알고리즘 풀이 > 프로그래머스' 카테고리의 다른 글
[Level 2] 압축 (0) | 2021.09.23 |
---|---|
[Level 2] 쿼드압축 후 개수 세기 (0) | 2021.09.15 |
[Level 3] 숫자 게임 (0) | 2021.09.10 |
[Level 3] 단어 변환 (0) | 2021.09.10 |
[Level 3] 불량 사용자 (0) | 2021.09.10 |