728x90
반응형
1. 문제 설명
2. 풀이과정
해당 문제는 말하는 숫자를 모두 구하여 저장하고 튜브가 말하는 순서에 맞는 숫자를 찾아 저장하면 된다.
총 저장해야 할 숫자는 (튜브가 구할 숫자의 개수 x 참가 인원) 개다.
원래 불러야 할 숫자를 해당 진법으로 바꾼 뒤 진법을 바꿔 부를 순서를 추가하는 방법으로 말해야 할 숫자를 모두 구하였다.
- 말하는 숫자를 모두 구해 저장할 리스트를 생성하고 처음에는 무조건 0을 불러야 하므로 0을 추가해 준다. result = [0]
- 원래 게임에서 다음으로 불러야 할 숫자는 1이므로 원래 불러야 할 숫자를 저장할 변수를 생성하고 1을 대입한다. num = 1
- 총 저장해야 할 숫자의 개수가 될 때까지 반복한다. while (len(result) < t * m)
- 원래 수를 해당 진법으로 변환하여 그 결과를 저장할 리스트를 생성한다. li = list()
- 진법 변환에서 사용할 변수를 생성하고 변환할 수를 대입한다. i = num
- 변환하는 수가 0이 될 때까지 반복하며 while (i > 0)
- 만약 변환하는 수를 진법으로 나눴을 때 나머지가 10이면 변환 결과에 A를 추가한다. if (i % n == 10): li.append('A')
- 만약 나머지가 11이면 변환 결과에 B를 추가한다. elif (i % n == 11): li.append('B')
- 만약 나머지가 12이면 변환 결과에 C를 추가한다. elif (i % n == 12): li.append('C')
- 만약 나머지가 13이면 변환 결과에 D를 추가한다. elif (i % n == 13): li.append('D')
- 만약 나머지가 14이면 변환 결과에 E를 추가한다. elif (i % n == 14): li.append('E')
- 만약 나머지가 15이면 변환 결과에 F를 추가한다. elif (i % n == 15): li.append('F')
- 반면 그 외의 0부터 9까지의 수가 나오면 변환하는 수를 진법으로 나눈 나머지를 추가한다. else: li.append(i % n)
- 변환하는 수를 진법으로 나눈 몫의 결과로 새로 저장한다. i //= n
- 해당 수를 진법으로 변환한 결과를 거꾸로 저장되어 있기 때문에 순서를 뒤집어 준다. li.reverse()
- 변환한 최종 진법의 결과를 하나씩 말해야 할 숫자 리스트에 추가한다. for i in li: result.append(i)
- 원래 수를 다음 수로 변경한다. num += 1
- 말해야 할 수를 필요한 최소 개수만큼 구했다면 튜브가 말해야 하는 순서에 해당하는 숫자를 정답에 문자열 형태로 추가한다. for i in range(p - 1, t * m, m): answer += str(result[i])
반응형
3. 소스코드
def solution(n, t, m, p):
answer = ''
result = [0]
num = 1
while (len(result) < t * m):
li = list()
i = num
while (i > 0):
if (i % n == 10):
li.append('A')
elif (i % n == 11):
li.append('B')
elif (i % n == 12):
li.append('C')
elif (i % n == 13):
li.append('D')
elif (i % n == 14):
li.append('E')
elif (i % n == 15):
li.append('F')
else:
li.append(i % n)
i //= n
li.reverse()
for i in li:
result.append(i)
num += 1
for i in range(p - 1, t * m, m):
answer += str(result[i])
return answer
728x90
반응형
'프로그래머스 > Python' 카테고리의 다른 글
[프로그래머스] 단어 변환 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.08.15 |
---|---|
[프로그래머스] 주차 요금 계산 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.08.14 |
[프로그래머스] 오픈채팅방 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.08.13 |
[프로그래머스] 더 맵게 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.08.12 |
[프로그래머스] [1차] 다트 게임 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.08.10 |
[프로그래머스] 야근 지수 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.08.09 |
[프로그래머스] [3차] 압축 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.08.08 |
[프로그래머스] 기사단원의 무기 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.08.07 |