일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 파이썬
- 우선순위큐
- 2018 KAKAO BLIND RECRUITMENT
- 2020 카카오 인턴십
- 크루스칼
- 최소 신장 트리
- 2020 KAKAO BLIND RECRUITMENT
- Spring
- 브루트포스
- 시뮬레이션
- 백준
- 로봇 청소기
- GIT
- SWEA
- 구현
- 백트래킹
- 투 포인터
- 비트마스킹
- 투포인터
- 이분탐색
- 2019 KAKAO BLIND RECRUITMENT
- 플로이드와샬
- 플로이드 와샬
- 프로그래머스
- 트라이
- 스택
- 조합
- 다익스트라
- BFS
- 2021 KAKAO BLIND RECRUITMENT
- Today
- Total
개발조아
[SWEA] 3752 가능한 시험 점수 파이썬 본문
문제 링크 : https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWHPkqBqAEsDFAUn
문제를 보자마자 아 이거 조합으로 해서 set으로 중복제거한 다음 길이 출력하면 되겠다 생각하고 조합으로 풀었더니 시간초과 나서 틀렸었다.
그냥 100C50만 생각해봐도 엄청 큰 숫자인데 귀찮다고 생각안하고 풀어버렸다.
풀이는 앞에서 나온 합을 기록하여 현재 숫자와 더해 가는 방식으로 했다.
1번 테스트케이스를 예로 들어 설명하겠다.
방문 배열에 해당 숫자가 나온다면 표시한다. 0의 경우 반드시 나오므로 1로 세팅하고 시작한다.
점수는 2,3,5가 들어오고 배열 크기는 가능한 점수 중 가장 큰 값까지 하면 된다.
1 0 0 0 0 0 0 0 0 0 0 - > 초기배열
2 입력으로 들어온다.
배열의 가장 오른쪽 부터 1인 경우를 찾는다.
배열[0]이 1 이므로 0+2의 값을 1로 바꾼다.
1 0 1 0 0 0 0 0 0 0 0
3 입력으로 들어온다.
배열의 가장 오른쪽 부터 1인 경우를 찾는다.
배열[2]가 1이므로 2+3의 값을 1로 바꾼다.
1 0 1 0 0 1 0 0 0 0 0
배열[0]이 1이므로 0+3의 값을 1로 바꾼다.
1 0 1 1 0 1 0 0 0 0 0
5 입력으로 들어온다.
배열의 가장 오른쪽 부터 1인 경우를 찾는다.
배열[5]가 1이므로 5+5의 값을 1로 바꾼다.
1 0 1 1 0 1 0 0 0 0 1
배열[3]이 1이므로 3+5의 값을 1로 바꾼다
1 0 1 1 0 1 0 0 1 0 1
배열[2]가 1이므로 2+5의 값을 1로 바꾼다
1 0 1 1 0 1 0 1 1 0 1
배열[0]이 1이므로 0+5의 값을 1로 바꾼다.
1 0 1 1 0 1 0 1 1 0 1
마지막으로 1인 것을 세면 정답이다.
배열의 가장 오른쪽부터 확인하는 것은 현재 단계에서 생성된 숫자는 확인하면 안되기 때문이다.
tc = int(input())
visited = [0]*10001
visited_num = 0
def solv(t):
global visited
n = int(input())
nums = list(map(int, input().split()))
max_num = sum(nums)
visited[0] = visited_num
for num in nums:
for idx in range(max_num,-1,-1):
if visited[idx] == visited_num:
visited[idx+num] = visited_num
print('#%d %d'%(t, visited.count(visited_num)))
for t in range(1,tc+1):
visited_num += 1
solv(t)
'알고리즘 > SWEA' 카테고리의 다른 글
[SWEA] 2819 격자판의 숫자 이어 붙이기 파이썬 (0) | 2021.08.11 |
---|---|
[SWEA] 1226 [S/W 문제해결 기본] 7일차 - 미로1 파이썬 (0) | 2021.08.11 |
[SWEA] 1249 [S/W 문제해결 응용] 4일차 - 보급로 파이썬 (0) | 2021.08.11 |
[SWEA] 1210 [S/W 문제해결 기본] 2일차 - Ladder1 파이썬 (0) | 2021.08.11 |
[SWEA] 4112 이상한 피라미드 탐험 파이썬 (0) | 2021.08.10 |