Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 백준
- sql 기술면접
- 백준 16236
- with recursive
- java
- 백준 19238
- 백준 파이썬
- 파이썬
- spring cloud
- JPA
- 백준 15685
- 프로래머스
- 백준 16235
- Coroutine
- 프로그래머스
- JVM
- 백준 17626
- 웹어플리케이션 서버
- Kotlin
- 백준 17779
- java 기술면접
- Spring Boot
- springboot
- MySQL
- 백준 16719
- Spring
- re.split
- spring oauth
- MSA
- spring security
Archives
- Today
- Total
시작이 반
[프로그래머스] N으로 표현(python 파이썬) 본문
SMALL
N = 1 일때 나타낼 수 있는 값
5
N = 2 일때 나타낼 수 있는 값
55, 5+5, 5-5, 5*5, 5/5
즉 N = 1의 집합을 조합해서 만든 경우이다.
N = 3 일때
555,
5+(5+5), 5-(5+5), (5+5)-5, (5+5)*5, (5+5)/5, 5/(5+5),
5+(5-5), 5-(5-5), (5-5)-5, (5-5)*5, (5-5)/5, 5/(5-5),
.... 이런식이다
즉
N = 1, N = 2의 조합이다.
N = 2, N =1( N = 1, N = 2와 중복임으로 생략)
N = 4 일때
N = 1, N = 3
N = 2, N = 2
N = 3, N = 1 ( N = 1, N = 3과 중복임으로 생략)
즉, 절반까지 구하면된다.
def solution(N, number):
S = [0, {N}]
if N == number:
return 1
for i in range(2, 9):
case = {int(str(N) * i)}
for j in range(1, i // 2 + 1):
for x in S[j]:
for y in S[i - j]:
case.add(x + y)
case.add(x - y)
case.add(y - x)
case.add(x * y)
if x != 0:
case.add(y // x)
if y != 0:
case.add(x // y)
if number in case:
return i
S.append(case)
return -1
LIST
'알고리즘 > Programmers' 카테고리의 다른 글
[프로그래머스] 신규 아이디 추천(python 파이썬) (0) | 2021.03.18 |
---|---|
[프로그래머스] 등굣길(python 파이썬) (0) | 2021.03.12 |
[프로그래머스] 정수 삼각형(python 파이썬) (0) | 2021.03.11 |
[프로그래머스] 입국심사(python 파이썬) (0) | 2021.03.11 |
[프로그래머스] 여행경로(python 파이썬) (0) | 2021.03.10 |