반응형
250x250
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
- 벽부수고이동하기 파이썬
- 사회조사분석사 2급 접수
- 2월공모주
- 정렬
- 머신러닝
- 공모주청약
- 사회조사분석사 2급 공부방법
- DFS
- 사회조사분석사 2급 기출문제집
- 너비우선탐색
- 백준 알고리즘
- 현대엔지니어링
- 사회조사분석사 2급 필기 요약정리
- 현대엔지니어링 수요예측
- 사회조사분석사 2급 필기 시험시간
- 공모주 청약
- 사회조사분석사 2급
- BFS
- 사회조사분석사2급실기신청
- 알고리즘
- 사회조사분석사2급실기신청꿀팁
- 시물레이션
- 사이킷런
- 사회조사분석사 2급 독학
- 사회조사분석사 2급 필기 공부방법
- 그리디
- 파이썬 정렬
- 오미크론 자가격리
- 백준
- 공모주
Archives
- Today
- Total
세상을 바꾸는 데이터
[백준 9095번] 1, 2, 3 더하기 - 파이썬 본문
문제 링크:
https://www.acmicpc.net/problem/9095
9095번: 1, 2, 3 더하기
각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력한다.
www.acmicpc.net
풀이 유형:
브루트포스 알고리즘, 백트래킹, 다이나믹 프로그래밍
풀이 과정:
이 문제는 다이나믹 프로그래밍(DP)으로 풀 수도 있지만 아직 개념이 잡혀있지 않아 DFS를 이용해 풀어보았다.
특정한 수(n)가 주어지면 n을 1, 2, 3만을 이용해 표현해야하고 가능한 모든 경우의 수를 도출해내는 것이 목표다.
간단하게 DFS를 이용해 풀 수 있다.
더한 값(sum)이 구하는 값(num) 보다 크다면 return, 같다면 개수(count)에 1을 추가해주면 된다.
여기서 DFS 개념을 다시 살펴보자.
DFS의 특징은 재귀함수이므로 반환점이 있는 마라톤이라고 생각하면 된다.
START 1지점(출발티켓) | 2지점(식혜) | 3지점(주스) | 4지점(초콜릿) |
END 1지점(도착티켓) | 2지점(식혜) | 3지점(주스) |
위의 표는 가상의 마라톤 경기가 있다고 해보자.
각 마라톤 선수는 START 1지점 -> 2지점 -> 3지점 -> 4지점 -> 3지점 -> 2지점 -> 1지점 순을 무조건 지나가야 한다.
즉, ⊃방향으로 돌아야 한다.
4지점에서 마라톤이 끝나는 것이 아닌 다시 왔던 길을 되돌아가야 하는 점이 재귀함수다.
풀이 코드:
# 9095번 1, 2, 3 더하기
# 테스트 케이스 개수
T = int(input())
# 결과값 표시
result = []
# dfs 메서드 함수
def dfs(num, sum):
global count
# 더한 값이 구하는 값보다 크다면 return
if num < sum:
return
# 더한 값이 구한 값과 같다면 개수 추가
if num == sum:
count += 1
return
for i in range(1, 4):
sum += i
# dfs 재귀적 수행
dfs(num, sum)
sum -= i
# 입력받고 DFS 메서드 수행
for _ in range(T):
num = int(input())
count = 0
dfs(num, 0)
result.append(count)
# 결과 출력
for answer in result:
print(answer)
728x90
반응형
'PS Study > BOJ(백준)' 카테고리의 다른 글
[백준 13913번] 숨바꼭질 4 - 파이썬 (63) | 2022.02.23 |
---|---|
[백준 1697번] 숨바꼭질 - 파이썬 (71) | 2022.02.22 |
[백준 2529번] 부등호 - 파이썬 (28) | 2022.02.21 |
[백준 14888번] 연산자 끼워넣기 - 파이썬 (49) | 2022.02.15 |
[백준 18405번] 경쟁적 전염 - 파이썬 (28) | 2022.02.15 |
Comments