프로그래머스 고득점kit N으로 표현 | Python
🔎 문제 설명
💚 Level 3
- 난이도 ★★★☆ - 스택&큐
익숙해지지 않는 문제. 나중에 한 번 더 풀어서 쉽게 구현할 수 있도록 해야겠다.
N으로 만들 수 있는 수로 사칙연산을 할 때 N을 최소한으로 사용해야 한다.
예) 555는 5가 3번 사용된 것이다.
📌📌📌
코드의 전체적인 풀이는 다음과 같다.
- N이 9번 이상 사용되면 -1 반환
➡️ 미리 N이 사용될 횟수 후보(1~8번)를 만든다.- 횟수 후보 안에서 만들 수 있는 수
x
,y
로 사칙연산을 하고 그 결과를numbers
에 추가
➡️numbers
에 타깃 넘버number
가 있으면 횟수 반환
💻 내 코드
def solution(N, number):
numbers = [set() for _ in range(9)]
# N 사용횟수 > 8, return -1
for i in range(1,9):
numbers[i].add(int(str(N)*i))
for j in range(i//2+1):
for x in numbers[j]:
for y in numbers[i-j]:
numbers[i].add(x+y)
numbers[i].add(x-y)
numbers[i].add(y-x)
numbers[i].add(x*y)
if y != 0: numbers[i].add(x//y)
if x != 0: numbers[i].add(y//x)
if number in numbers[i]:
return i
return -1
💙 You need to log in to GitHub to write comments. 💙
If you can't see comments, please refresh page(F5).