반응형
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 |