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
- SWEA
- c++
- PHP 웹페이지 만들기
- 생활코딩
- Sookmyung Information Security Study
- lob
- 머신러닝
- Python
- The Loard of BOF
- 숙명여자대학교 정보보안동아리
- C언어
- BOJ Python
- 백준
- 숙명여자대학교 정보보안 동아리
- 드림핵
- siss
- Javascript
- hackctf
- 웹페이지 만들기
- 자료구조 복습
- hackerrank
- BOJ
- c
- CSS
- HTML
- 기계학습
- XSS Game
- WarGame
- 풀이
- 파이썬
Archives
- Today
- Total
혜랑's STORY
SWEA 3752번 본문
#문제
#풀이
이 문제에서 핵심은 받을 수 있는 성적 중 중복되는 값을 확인해주는 것이라고 생각한다. 따라서 확인용 배열과 최종 결과를 저장할 배열을 따로 만들어둔다. 확인용 배열과 최종 배열을 저장할 배열의 1번째는 0으로 무조건 성립하기 때문에 미리 1(확인 값)과 0(실제 값)으로 초기화 해준다. 확인용 배열의 초기화는 첫번째 값인 1에 point안에 들어있는 요소들의 합 만큼 0으로 초기화 해준다. 이 배열의 역할은 값이 존재하면 1 아니면 0으로 검색하여 중복 여부를 알 수 있도록 하는 것이다. 그 뒤, 값이 중복되지 않았다는 것이 확인되면 확인용 배열의 자리를 1로 바꿔주고 최종 결과 배열에 실제 값을 추가해 준다. 최종으로 테스트 케이스의 번호와 최종 결과 배열의 길이(점수의 경우의 수)를 출력해 주면 된다.
#코드
T = int(input('T : '))
for t in range(1, T+1):
N = int(input('N : '))
point = list(map(int, input('Point : ').split()))
# 확인용 배열
check = [1] + [0] * sum(point)
# 최종 결과를 저장할 배열(0점은 무조건 나오기 때문에 미리 저장)
result = [0]
for i in point:
temp = list(result)
for j in temp:
# 중복 확인
if not check[i+j]:
check[i+j] = 1
result.append(i+j)
print('#{} {}'.format(t, len(result)))
#실행 결과
'무지성 공부방 > 알고리즘 해결' 카테고리의 다른 글
[BOJ_Python] 1431번, 1920번 (0) | 2020.07.21 |
---|---|
[BOJ _Python] 11650번, 10814번 (0) | 2020.07.20 |
SWEA 7732번 (0) | 2020.07.14 |
[BOJ_Python] 1026번 (0) | 2020.04.06 |
[BOJ_Python] 1427번 (0) | 2020.04.06 |