[Programmers] nμ§„μˆ˜ κ²Œμž„

Updated:

nμ§„μˆ˜ κ²Œμž„

nμ§„μˆ˜ κ²Œμž„ 을 ν΄λ¦­ν•˜λ©΄ λ°”λ‘œ μ΄λ™ν•œλ‹€.

이 λ¬Έμ œμ—μ„œ μš”κ΅¬ν•˜λŠ” 쑰건은 숫자λ₯Ό 주어진 μ§„μˆ˜μ— 맞게 λ°”κΏ€ 수 μžˆλŠ”κ°€ ? λ°˜λ³΅λ¬Έμ„ 잘 ν™œμš© ν•  수 μžˆλŠ”κ°€ ? λ₯Ό λ¬Όμ–΄λ³΄λŠ” 문제인 것 κ°™λ‹€.

m λͺ…μ˜ μ‚¬λžŒμ΄ 있고 0 λΆ€ν„° κ²Œμž„μ΄ 끝날 λ•Œ κΉŒμ§€ 숫자λ₯Ό 1 μ”© λŠ˜λ €κ°€λ©° 주어진 μ§„μˆ˜μ— λ§žλŠ” 수λ₯Ό ν•œμžλ¦¬ μ”© λ§ν•˜κ³  λ„˜μ–΄κ°€λ©΄ λœλ‹€.

예λ₯Όλ“€μ–΄ 5λͺ…μ˜ μ‚¬λžŒμ΄ 있고 2μ§„μˆ˜λ‘œ κ²Œμž„μ„ ν•˜λŠ” 경우 0 / 1 / 1 / 0 / 1 / 1 / 1 / 0 / 0 .. μ΄λ ‡κ²Œ λ§ν•˜λ©΄ λœλ‹€.

νŒŒμ΄μ¬μ—λŠ” 2, 8, 10, 16 μ§„μˆ˜λ‘œ λ³€ν™˜ν•΄μ£ΌλŠ” κΈ°λ³Έ ν•¨μˆ˜κ°€ μžˆλ‹€.

ν•˜μ§€λ§Œ λ¬Έμ œμ—μ„  2 이상 16 μ΄ν•˜μ˜ μ§„μˆ˜κ°€ 주어진닀고 ν–ˆμœΌλ‹ˆ μ§„μˆ˜λ‘œ λ°”κΏ”μ£ΌλŠ” ν•¨μˆ˜λ₯Ό λ§Œλ“€μ—ˆλ‹€.

λ°”κΎΈκ³  싢은 μˆ«μžμ™€ μ§„μˆ˜λ₯Ό λ‚˜λ¨Έμ§€ 계산을 톡해 λ‚˜μ˜¨ λ‚˜λ¨Έμ§€λ₯Ό μ „λΆ€ 이어 λΆ™μ—¬μ£Όλ©΄ λœλ‹€.

10 ~ 15 λŠ” A, B, C, D, E, F, G 둜 λ°”λ€Œκ²Œ 처리λ₯Ό ν•œ λ’€ λ§ˆμ§€λ§‰μ— 이어뢙인 λ¬Έμžμ—΄μ„ 뒀집어 λ°˜ν™˜ν•œλ‹€.

또 자기 μ°¨λ‘€κ°€ 올 λ•Œ 그에 λ§žλŠ” 숫자λ₯Ό 정닡에 이어 뢙이면 λœλ‹€.

turn 을 계속 μ§„ν–‰ν•˜λ©΄μ„œ turn κ³Ό pκ°€ 같아지면 닡을 μΆ”κ°€ν•΄μ£Όκ³  λ‹€μ‹œ p에 m 을 λ”ν•œλ‹€.


def change_num(num, n):
	output = ''
	if num == 0:
		output = '0'

	while num:
		if num % n == 10:
			output += 'A'
		elif num % n == 11:
			output += 'B'
		elif num % n == 12:
			output += 'C'
		elif num % n == 13:
			output += 'D'
		elif num % n == 14:
			output += 'E'
		elif num % n == 15:
			output += 'F'
		else:
			output += str(num % n)
		num = int(num / n)

	return output[::-1]


def solution(n, t, m, p):
	answer = ''
	start = 0
	turn = 1
	while True:
		change = change_num(start, n)
		for i in change:
			if turn == p:
				answer += i
				p += m
				if len(answer) == t:
					return answer
			turn += 1
		start += 1

Categories:

Updated:

Leave a comment