https://school.programmers.co.kr/learn/courses/30/lessons/17687
나의 풀이 (오답)
def solution(n, t, m, p):
num=''
for i in range(t):
answer=''
while i / n >= 1:
answer += str(i % n)
i = i // n
else:
answer += str(i)
num += answer[::-1]
return num
이진수를 구하는 것까지는 접근 가능하였으나 10~15를 각각 A~F로 출력하는 조건과 게임에 참가하는 인원과 튜브의 순서 사이에서 어떻게 찾고자 하는 문자열을 뽑아낼 것인지 어려움이 있었다.
모범 답안
def convert(number, n):
if number == 0:
return '0'
NUMBERS = "0123456789ABCDEF"
res = ""
while number > 0:
number, mod = divmod(number, n)
res += NUMBERS[mod]
return res[::-1]
def solution(n, t, m, p):
answer = ''
game = ''
cur = p - 1
for num in range(t * m):
game += convert(num, n)
while 1:
if len(answer) == t:
break
answer += game[cur]
cur += m
return answer
알게된 점
인덱스별로 조건을 변경할 필요가 있는 경우 문자열 인덱싱을 활용할 수 있다.
'코딩테스트 > programmers (python)' 카테고리의 다른 글
Programmers / 2단계 / 주차 요금 계산 / python / 2022 KAKAO BLIND RECRUITMENT (0) | 2024.03.06 |
---|---|
Programmers / 2단계 / 방문 길이 / python (1) | 2024.03.06 |
Programmers / 2단계 / 다리를 지나는 트럭 / python (0) | 2024.02.24 |
Programmers / 2단계 / [3차] 압축 / python / 2018 KAKAO BLIND RECRUITMENT (0) | 2024.02.23 |
Programmers / 2단계 / 땅따먹기 / python (0) | 2024.02.21 |