코딩문제풀이/프로그래머스

[Python] N으로 표현

코딩하는 포메라니안 2021. 8. 30. 21:03

1. 문제

 

 

 

2. 풀이 과정

방법 1) N을 한 개 사용할 때부터 8개까지 사용할 때까지 돌면서, 찾는 값이 나오면 종료한다.

 

1개일 때 : N(1)

2개일 때 : N(1) + 연산자 + N(1)

3개일 때 : N(1) + 연산자 + N(2), N(2) + 연산자 + N(1)

...

 

여기서 연산자가 +, *일 때는 연산자 기준으로 좌우가 바뀌어도 같은 값이지만 -, //는 다른 값이 나올 수 있어서 추가로 고려해주어야 한다.

 

def solution(N, number):
    answer = 0
    arr = []
    for i in range(1, 9):#사용하는 N의 수
        temp = set() #중복제거를 위해 집합 사용
        temp.add(int(str(N)*i)) #5, 55, 555
        for j in range(1, i//2+1):
            for a in arr[j-1]:#연산자 기준 앞에 오는 숫자
                 for b in arr[i-j-1]: #연산자 기준 뒤에 오는 숫자
                    #덧셈, 곱셈 : 피연산자 순서가 바뀌어도 동일
                    temp.add(a+b)
                    temp.add(a*b)
                    #뺄셈, 나눗셈 : 피연산자 순서가 바뀌면 다른 값
                    temp.add(a-b)
                    temp.add(b-a)
                    if a != 0:
                        temp.add(b//a)
                    if b != 0:
                        temp.add(a//b)
        if number in temp:
                 return i
        arr.append(temp)
    return -1

 

'코딩문제풀이 > 프로그래머스' 카테고리의 다른 글

[Python] 여행경로  (0) 2021.08.31
[Python] 등굣길  (0) 2021.08.31
[Python] 단속카메라  (0) 2021.08.30
[Python] 섬 연결하기  (0) 2021.08.30
[Python] 이중우선순위큐  (0) 2021.08.30