본문 바로가기
프로그래머스/lv.2

[3차] n진수 게임

by bingual 2024. 2. 15.
반응형

 

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

문제풀이

반복문에서 "".join 메서드 혹은 문자열 연산을 계속 반복하게 된다면 메모리와 시간 복잡도가 증가한다. 

 

  • 진수변환 과정에서 배열을 반환한다.
  • t * m 만큼 진수변환을 진행하고 배열을 확장한다.
  • 등차수열을 이용해 자신의 차례에서 해당 진수를 출력한다.

따라서 해당 방법으로 로직을 구현한다면 좀 더 알맞게 풀이를 할 수 있다.

def solution(n, t, m, p):
    answer = []
    decimals = []

    i = 0
    while len(decimals) < t * m:
        decimals.extend(convert(i, n))
        i += 1

    for i in range(t):
        answer.append(decimals[p - 1 + i * m])

    return "".join(answer)


def convert(n, b):
    if n == 0:
        return ["0"]

    decimals = []
    while n > 0:
        r = n % b
        decimals.append(str(r) if r < 10 else chr(65 + r - 10))
        n //= b

    return decimals[::-1]

 

'프로그래머스 > lv.2' 카테고리의 다른 글

더 맵게  (0) 2024.02.16
압축  (0) 2024.02.16
k진수에서 소수 개수 구하기  (0) 2024.02.09
전화번호 목록  (0) 2024.02.09
[1차] 뉴스 클러스터링  (0) 2024.02.08