n진수 게임
코딩테스트 연습 - [3차] n진수 게임
N진수 게임 튜브가 활동하는 코딩 동아리에서는 전통적으로 해오는 게임이 있다. 이 게임은 여러 사람이 둥글게 앉아서 숫자를 하나씩 차례대로 말하는 게임인데, 규칙은 다음과 같다. 숫자를 0
programmers.co.kr
- 내 풀이
- deque 이용해서 popleft로 하나씩 출력
- divmod(): 두 숫자를 나누어 몫과 나머지를 tuple로 반환하는 함수
from collections import deque
def solution(n, t, m, p):
answer = ''
queue=deque('0') #가장 첫번 째 값 0
num=0
count=1
def jinsu(n,q):
base=''
while n>0:
n,mod=divmod(n,q)
base+=str(mod)
return base[::-1]
while t>0:
if not queue:
num+=1
if n==16:
queue+=format(num,'X')
else:
queue+=jinsu(num,n)
else:
if count==p:
if count==m:
count=1
else:
count+=1
answer+=queue.popleft()
t-=1
else:
if count==m:
count=1
else:
count+=1
queue.popleft()
return answer

→ 실행 케이스 20,21,23,26 실패
- 내 풀이 (수정)
- 10진수 → N진수 변환 함수 변경
- 위의 변환 함수는 10진수 이하만 가능
- 10~15를 A~F로 나타내는 전체진수 계산 가능한 함수
- 10진수 → N진수 변환 함수 변경
#N진수 변환 함수
#10~15를 A~F로 나타낸다
def jinsu(n, base):
arr = "0123456789ABCDEF"
q, r = divmod(n, base)
if q == 0:
return arr[r]
else:
return jinsu(q, base) + arr[r] #맨뒤 나머지부터 출력됨
from collections import deque
def solution(n, t, m, p):
answer = ''
queue=deque('0') #가장 첫번 째 값 0
num=0
count=1
def jinsu(n, base):
arr = "0123456789ABCDEF"
q, r = divmod(n, base)
if q == 0:
return arr[r]
else:
return jinsu(q, base) + arr[r]
while t>0:
if not queue:
num+=1
queue+=jinsu(num,n)
else:
if count==p:
if count==m:
count=1
else:
count+=1
answer+=queue.popleft()
t-=1
else:
if count==m:
count=1
else:
count+=1
queue.popleft()
return answer
print(solution(2,4,2,1))
print(solution(16,16,2,1))
print(solution(16,16,2,2))
#결과
"0111"
"02468ACE11111111"
"13579BDF01234567"
- 다른 사람 풀이
def convert(m,n):
total = "0123456789ABCDEF"
i,j = divmod(m,n)
if i ==0:
return total[j]
else :
return convert(i,n)+total[j]
def solution(n, t, m, p):
total = ''
answer=''
for i in range(t*m):
total+=convert(i,n)
for i in range(t):
idx = p-1 + i*m
answer +=total[idx]
return answer'코딩테스트 > 프로그래머스' 카테고리의 다른 글
| [프로그래머스] [Level 2] [스택/큐] 다리를 지나는 트럭 (0) | 2022.05.27 |
|---|---|
| [프로그래머스] [Level 2] 큰 수 만들기 (0) | 2022.05.11 |
| [프로그래머스] [Level 2] 다음 큰 숫자 (0) | 2022.05.06 |
| [프로그래머스] [Level 2] [2022 KAKAO BLIND RECRUITMENT] k진수에서 소수 개수 구하기 (0) | 2022.05.02 |
| [프로그래머스] [Level 2] 올바른 괄호 (0) | 2022.05.01 |