새로운 블로그로 이전 작업을 진행하고 있어 포스트가 새로 작성되고 있지 않습니다.

빠른 시일 내에 새로운 블로그로 인사드리겠습니다.

새로운 블로그 : https://unho.vercel.app/

본문 바로가기
알고리즘 문제풀이/Python

[프로그래머스] n진수 게임

by 언호 2022. 3. 6.

📖 문제


🧑🏻‍💻 풀이 과정

1) 문제 이해 및 접근

튜브가 몇번째 순서일때마다 말을 해야하는지 순서를 구해주었습니다.

숫자들을 n진수로 변화하여 사람들이 외칠 한자리씩 나누어 리스트에 저장하였습니다.

2) 풀이 코드

사용 언어 - Python

from collections import deque

def solution(n, t, m, p):                                   # 변경해야할 진법, 구해야할 정답의 개수, 게임 참여 인원, 튜브의 순서
    answer = []                                             # 정답 리스트
    turns = []                                              # 튜브가 말해야할 순서
    converted = ['0']                                       # 변경된 진법이 한자리씩 저장되는 리스트

    def convert(num):                                       # 변환 함수
        result = deque()    

        while num > 0:                                      # 0보다 크다면
            if num%n >= 10:                                 # 나머지가 10 보다 크거나 같으면
                result.appendleft(str(chr(55 + num%n)))     # 알파벳 코드값 추가
            else:                                           # 나머지가 10 보다 작다면
                result.appendleft(str(num % n))             # 숫자 추가
            num //= n

        converted.extend(result)                            # 변경된 숫자의 리스트에 추가

    for i in range(t):                      # 튜브의 말해야하는 턴을 모두 구함
        turns.append(i*m+p-1)

    num = 0
    while len(converted) <= max(turns):     # 튜브가 만들어야하는 턴까지 값을 못 구했다면
        convert(num)                        # 10진수 수를 넣어서 진번 변환
        num += 1
    
    for i in turns:                         # 튜브가 말해야 할 턴을 모두 반복
        answer.append(converted[i])         # 정답에 추가

    return ''.join(answer)

📝 결과 및 학습한 내용

1) 어려웠던 내용

특별히 없습니다.

2) 새롭게 학습한 내용

특별히 없습니다.


🔗 문제 링크

- https://programmers.co.kr/learn/courses/30/lessons/17687

 

코딩테스트 연습 - [3차] n진수 게임

N진수 게임 튜브가 활동하는 코딩 동아리에서는 전통적으로 해오는 게임이 있다. 이 게임은 여러 사람이 둥글게 앉아서 숫자를 하나씩 차례대로 말하는 게임인데, 규칙은 다음과 같다. 숫자를 0

programmers.co.kr

 

 

※ 오류 및 오타, 다른 의견이 있는 경우 댓글을 남겨주시면 감사하겠습니다

댓글