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
- 파이썬
- 코테
- 스택
- 스택자료구조
- 자료구조
- react-query
- 문자열
- 그리디
- 알고리즘
- Express
- 그리디알고리즘
- socket.io
- CSS
- 코드트리
- 코딩테스트실력진단
- 백준알고리즘
- JS
- 백준
- react
- 코딩테스트
- 블챌
- BFS
- DFS기초
- DP
- 구현
- django
- DFS활용
- 완전탐색
- 재귀
- DFS
Archives
- Today
- Total
꾸준하게 거북이처럼
휴가 - 삼성 SW 역량 테스트 문제 본문
def DFS(L,sum):
global res
if L > n:
if res < sum:
res = sum
else:
DFS(L + Ti[L], sum + Pi[L])
DFS(L+1,sum)
if __name__ == "__main__":
res = 0
n = int(input())
Ti = [0]
Pi = [0]
for _ in range(n):
t, p = map(int,input().split())
Ti.append(t)
Pi.append(p)
DFS(1,0)
print(res)
# 최대 점수구하기 문제처럼, 어떤날에 상담을 하느냐 안하느냐가 포인트이다. 만약 1일째 상담을 하면 5일째부터
# 상담을 할 수 있고 만약 5일째 상담을 안한다면 6일째 상담으로 넘어가는 것이다. 역시 이 문제도 부분집합 문제를
# 활용해서 문제를 풀 수 있다. 대신 상담을 하면
# 현재 상담일(레벨) + 상담기간 => L +Ti[L] 로 업데이트 된다.
# 상담하지 않을 시, 다음으로 넘어가니 L+1로 재귀호출.
# 매개변수 L을 상담일자 기간의 합으로 두어서 sum도 sum + Pi[L]로 업데이트를 한다.
# 지금까지 배웠던 것을 회상하면서, 어떤 식으로 문제를 풀 수 있을지 그림을 그린다.
# 그대로 코드로 정확하게 쓴다.
# 에디터에 옮겨쓰고 테스트 해보자.
먼가 거의 다풀어갔는데 너무 복잡하게 생각해버렸다.. ㅠㅜ 간단하게 풀 수 있다는 것에 좌절연속ㅋㅋ 괜찮아!
코드 작성하는데까지 1시간을 잡고 문제를 읽고 기본 로직을 생각한다. 천천히 그림을 그려가면서 문제를 풀어보자. 손코딩을 정확하게 써보자. 그 다음 에디터에 옮겨서 테스트를 해보자!!
'Algorithm 문제 & 공부 > DFS' 카테고리의 다른 글
동전바꿔주기 (0) | 2022.06.27 |
---|---|
양쪽저울문제 (0) | 2022.06.26 |
DFS활용 - 최대점수 구하기 (0) | 2022.06.25 |
경로탐색 (0) | 2022.06.24 |
라이브러리를 이용한 순열 추측 (0) | 2022.06.23 |
Comments