소스 코드
def find(idx,cur_sum):
global goal
# 원하는 값 찾았을 때
# s가 0인 예외 케이스 제거하기 위해 idx != 0 조건 추가
if cur_sum == s and idx != 0:
if idx == n:
goal += 1
return
# 끝까지 돌려서 s 되는 모든 경우 찾기 위해
# ex) s = 0, board = -1 1 3 -3 인 경우
# 해당 조건 없이 return하면 1에서 끝남, 근데 -1 1 3 -3 도 s를 만족 함
else:
goal += 1
for q in range(idx,n):
find(q+1,cur_sum+board[q])
return
n,s = map(int,input().split())
board = list(map(int,input().split()))
goal = 0
find(0,0)
print(goal)
해결 방법
느낀 점
ps. 개인적인 코드와 코드를 작성의 이유를 적은 것입니다.
오류나 적절치 않은 문법이 존재할 수 있으며, 다른 분들께는 굉장히 비효율적인 방법으로 여겨질 수 있습니다.
혹시 개선 사항, 오류 및 문제에 대한 수정 사항 등을 댓글로 남겨주신다면 감사한 마음으로 배우고 수정하겠습니다.
'코딩 문제해결 > 문제 풀이.백준' 카테고리의 다른 글
[BOJ/백준 코딩] 스타트와 링크 - PYTHON #14889 (0) | 2021.10.08 |
---|---|
[BOJ/백준 코딩] 암호 만들기 - PYTHON #1759 (0) | 2021.10.07 |
[BOJ/백준 코딩] 인구 이동 - PYTHON #16234 (0) | 2021.02.27 |
[BOJ/백준 코딩] 주사위 굴리기 - PYTHON #14499 (0) | 2021.02.27 |
[BOJ/백준 코딩] 톱니바퀴 - PYTHON #14891 (0) | 2021.02.25 |