[Programmers] μˆ«μžμ•Όκ΅¬

Updated:

μˆ«μžμ•Όκ΅¬

μˆ«μžμ•Όκ΅¬ λ₯Ό ν΄λ¦­ν•˜λ©΄ λ°”λ‘œ μ΄λ™ν•œλ‹€.

질문이 1κ°œμ—μ„œ 100개 μ‚¬μ΄λ‘œ 주어지면 μ΄λ•Œ 닡이 될 수 μžˆλŠ” λͺ¨λ“  숫자의 개수λ₯Ό λ°˜ν™˜ν•˜λ©΄ λœλ‹€.

[ [123, 1, 1], [356, 1, 0], [327, 2, 0], [489, 0, 1] ] 이 주어진닀면 κ°€λŠ₯ν•œ 닡은 324, 328 이 λœλ‹€.

해결방법은 123λΆ€ν„° 987κΉŒμ§€ λ°˜λ³΅ν•˜λ©΄μ„œ λͺ¨λ“  질문의 Strike, Ball κ³Ό 닡이 같은지 λΉ„κ΅ν•˜λ©΄ λœλ‹€.

324의 경우 123κ³Ό λΉ„κ΅ν–ˆμ„ λ•Œ 1S 1B, 356κ³Ό λΉ„κ΅ν–ˆμ„ λ•Œ 2S 0B, 327κ³Ό λΉ„κ΅ν–ˆμ„ λ•Œ 2S 0B, 489와 λΉ„κ΅ν–ˆμ„ λ•Œ 0S 1B κ°€ λœλ‹€.

문제 μ‘°κ±΄μ—μ„œ 1 ~ 9 κΉŒμ§€μ˜ μ€‘λ³΅λ˜μ§€ μ•ŠλŠ” μˆ«μžκ°€ 였기 λ•Œλ¬Έμ— 0이 μžˆκ±°λ‚˜ 쀑볡이 λ˜λŠ” κ²½μš°λŠ” 체크λ₯Ό ν•˜μ§€ μ•ŠλŠ”λ‹€.


def solution(baseball):
	answer = 0

	for check_num in range(123, 988):
		check_num = str(check_num)
		if '0' in check_num or len(set(list(check_num))) < 3:  # μˆ«μžμ— 0이 μžˆκ±°λ‚˜ 쀑볡 된 μˆ«μžκ°€ 있으면 λ„˜μ–΄κ°„λ‹€
			continue

		answer_check = 0
		for cur in baseball:
			strike = 0
			ball = 0
			answer_num = str(cur[0])
			for val in check_num:
				try:
					if check_num.index(val) == answer_num.index(val):
						strike += 1
					else:
						ball += 1
				except ValueError:
					pass

			if cur[1] == strike and cur[2] == ball:
				answer_check += 1
			else:
				pass

		if answer_check == len(baseball):
			print(check_num)
			answer += 1

	return answer

Categories:

Updated:

Leave a comment