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 | 31 |
Tags
- GCP
- airflow
- VPC
- beuatifulsoup
- HTML
- Spark
- Tableau
- Til
- sqlsolve
- django
- cloud platform
- superset
- 코테 연습
- Snowflake
- 데브코스
- sql챌린지
- 팀 프로젝트
- 코딩 테스트
- 코딩테스트
- AWS
- 데이터 시각화
- solvesql
- 슈퍼셋
- 데이터 엔지니어
- PCCP
- SQL
- Selenium
- Kafka
Archives
- Today
- Total
주니어 데이터 엔지니어 우솨's 개발일지
N으로 표현 본문
문제 설명
아래와 같이 5와 사칙연산만으로 12를 표현할 수 있습니다.
12 = 5 + 5 + (5 / 5) + (5 / 5)
12 = 55 / 5 + 5 / 5
12 = (55 + 5) / 5
5를 사용한 횟수는 각각 6,5,4 입니다. 그리고 이중 가장 작은 경우는 4입니다.
이처럼 숫자 N과 number가 주어질 때, N과 사칙연산만 사용해서 표현 할 수 있는 방법 중 N 사용횟수의 최솟값을 return 하도록 solution 함수를 작성하세요.
제한사항
- N은 1 이상 9 이하입니다.
- number는 1 이상 32,000 이하입니다.
- 수식에는 괄호와 사칙연산만 가능하며 나누기 연산에서 나머지는 무시합니다.
- 최솟값이 8보다 크면 -1을 return 합니다.
def solution(N, number):
s = [set() for x in range(8)]
for i,x in enumerate(s,start=1) :
x.add(int(str(N)*i))
for i in range(0, len(s)) :
for j in range(i) :
for op1 in s[j] :
for op2 in s[i-j-1] :
s[i].add(op1 + op2)
s[i].add(op1-op2)
s[i].add(op1*op2)
if op2 != 0 :
s[i].add(op1//op2)
if number in s[i] :
answer = i+1
break
else :
answer = -1
return answer
'코딩 테스트' 카테고리의 다른 글
코딩테스트 [PCCP 기출문제] 1번 / 동영상 재생기 (python) (0) | 2024.09.19 |
---|---|
여행경로 (1) | 2024.04.28 |
더 맵게 (0) | 2024.04.28 |
힙(Heap)과 동적계획법(Dynamic Programming) (0) | 2024.04.28 |
큰 수 만들기 (1) | 2024.04.28 |