일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 소프트웨어 아카데미
- LG글로벌챌린저
- 몽골 헬스장
- 몽골
- 울란바토르
- 파이썬
- 테를지국립공원
- 게르
- 칭기스칸 동상
- 백준
- Python
- SWEA
- 월드프렌즈
- 헬스
- 월드프렌즈 ICT 봉사단
- ICT봉사단
- algorithm
- 한 줄로 서기
- 몽골 고기
- 초원
- 테를지
- 몽골요리
- 알고리즘
- 칭기즈칸
- 독일
- 여행
- 코로나
- 교환학생
- 담슈타트
- 아부다비
Archives
- Today
- Total
맛있는물회
[맛있는물회] <programmers 알고리즘> "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 함수를 작성하세요.
Input
- N은 1 이상 9 이하입니다.
- number는 1 이상 32,000 이하입니다.
- 수식에는 괄호와 사칙연산만 가능하며 나누기 연산에서 나머지는 무시합니다.
- 최솟값이 8보다 크면 -1을 return 합니다.
Output
생각한 아이디어
i 의 값을 구해야할 때 j+k = i 로 했을때
예를 들어
i가 5이면
1 4
2 3
3 2
4 1
이런 for 문 만드는 점화식이다!
규칙 찾기도 어려웠지만, 점화식만드는 for 문 조건식도 쉽지 않은듯,,,
https://gurumee92.tistory.com/164
너무 잘 설명해주셔서 참고가 많이 되었다!
소스코드
def solution(N, number):
answer = 0
MIN = 10
arr = [list() for _ in range(9)]
for i in range(1,9):
arr[i].append(int(str(N)*i))
for i in range(2,9):
for j in range(1,i):
for op1 in arr[j]:
for op2 in arr[i-j]:
arr[i].append(op1+op2)
arr[i].append(op1-op2)
arr[i].append(op1*op2)
if op2 != 0:
arr[i].append(op1//op2)
if number in arr[i]:
MIN = min(MIN,i)
if MIN == 10:
answer = -1
else:
answer = MIN
print(answer)
return answer
if __name__ == "__main__":
N = 5
number = 12
solution(N,number)
*파이썬 문법 정리
'IT > 알고리즘' 카테고리의 다른 글
[맛있는물회] <programmers 알고리즘> "숫자 야구" (0) | 2020.04.15 |
---|---|
[맛있는물회] <programmers 알고리즘> "타겟 넘버" (0) | 2020.04.15 |
[맛있는물회] <백준 알고리즘> 10844번 "쉬운 계단 수" (0) | 2020.04.08 |
[맛있는물회] <SWEA알고리즘> 4880번 "토너먼트 카드게임" (0) | 2020.04.07 |
[맛있는물회] <SWEA알고리즘> 4881번 "배열 최소 합" (0) | 2020.04.07 |
Comments