N으로 표현
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
- 다른 사람 풀이
- N을 숫자 1개로, 2개로, 3개로....M( 1<M<N-1 )개로 표현
- M개 사용하여 나올 수 있는 값들을 case_set에 모은 뒤 possible_set[M]에 저장
- 계속 값들끼리 사칙연산 실행하면서 나올 수 있는 값들을 모두 구하는 것
- 찾는 값이 case_set에 있으면 몇개를 사용한 것인지 M을 반환
def solution(N, number):
possible_set = [0,[N]] # 조합으로 나올수 있는 가능한 숫자들, 여기에 계속 append하며 이후에 사용함
if N == number: #주어진 숫자와 사용해야 하는 숫자가 같은 경우는 1개면 족하므로 1으로 놓는다.
return 1
for i in range(2, 9): # 2부터 8까지로 횟수를 늘려 간다.
case_set = [] # 임시로 사용할 케이스 셋, 각 I 별로 셋을 만들어 possible set에 붙인다.
basic_num = int(str(N)*i) # 같은 숫자 반복되는 거 하나를 추가한다. ("NN","NNN"...)
case_set.append(basic_num)
for i_half in range(1, i//2+1): # 사용되는 숫자의 횟수를 구해야 하는데, 절반 이상으로 넘어가면 같은 결과만 나올 뿐이므로 절반까지만을 사용한다.
for x in possible_set[i_half]:
for y in possible_set[i-i_half]: # x와 y를 더하면 i 가 되도록 만든 수다.
case_set.append(x+y)# 각 사칙연산 결과를 더한다.
case_set.append(x-y)
case_set.append(y-x)
case_set.append(x*y)
if y !=0:
case_set.append(x/y)
if x !=0:
case_set.append(y/x)
if number in case_set:
return i
possible_set.append(case_set) # 최종 결과물 set에 사칙 연산 결과를 더한다.
return -1 #N 이 8까지 답이 없으면 -1을 출력한다.
풀이 출처) https://www.hamadevelop.me/algorithm-n-expression/
프로그래머스-N으로 표현, 파이썬
알고리즘 문제풀이
www.hamadevelop.me
- 다른 사람 풀이 2
- 시간이 조금 더 단축
def solution(N, number):
dp = [set() for i in range(9)] # 사용횟수에 따라 가능한 숫자를 담을 리스트
for i in range(1, 9): # 1~8
dp[i].add(int(str(N)*i)) # 단순히 이어붙인 숫자
for j in range(i//2 + 1):
for first in dp[j]:
for second in dp[i-j]:
dp[i].add(first + second)
dp[i].add(first - second)
dp[i].add(second - first)
dp[i].add(first * second)
if second != 0 :
dp[i].add(first // second)
if first != 0 :
dp[i].add(second // first)
if number in dp[i]:
return i
return -1
풀이 출처) https://haesoo9410.tistory.com/270
<Level 3> N으로 표현 with 파이썬
문제 설명 아래와 같이 5와 사칙연산만으로 12를 표현할 수 있습니다. 12 = 5 + 5 + (5 / 5) + (5 / 5) 12 = 55 / 5 + 5 / 5 12 = (55 + 5) / 5 5를 사용한 횟수는 각각 6,5,4 입니다. 그리고 이중 가장 작은 경..
haesoo9410.tistory.com
와 진짜 어렵다.
문제 이해를 위한 자세한 설명: https://gurumee92.tistory.com/164
프로그래머스 문제 풀이 N으로 표현
이 문제는 이시윤 강사님의 프로그래머스 강좌 "파이썬을 무기로, 코딩테스트 광탈을 면하자!"를 보고 정리한 내용입니다. 문제 URL N으로 표현 Contents 문제 지문 파악하기 강사님의 알고리즘 풀
gurumee92.tistory.com
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
| [프로그래머스] [Level 2] [DFS/BFS] 타겟 넘버 (0) | 2022.09.05 |
|---|---|
| [Python] [COS Pro 샘플문제] [2급] (0) | 2022.08.25 |
| [프로그래머스] [Level 2] [완전 탐색] [중복 순열] 모음 사전 (0) | 2022.08.22 |
| [프로그래머스] [Level 2] [완전탐색] 전력망을 둘로 나누기 (0) | 2022.08.21 |
| [프로그래머스] [Level 2] [완전 탐색] 조이스틱 (0) | 2022.08.18 |