반응형
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
- 빅데이터분석기사
- 나누어 떨어지는 숫자 배열 python
- codeup 1020 java
- 가운데 글자 가져오기 java
- docker remove
- 프로그래머스 가운데 글자 가져오기 자바
- 프로그래머스 가운데 글자 가져오기 파이썬
- 코드업 1020 자바
- 청년 Ai Big Data 아카데미
- 나누어 떨어지는 숫자 배열 java
- m1 docker install
- docker 삭제
- 최소 스패닝 트리
- 빅분기실기
- docker 완전 삭제
- 핸즈온 머신러닝
- 코드업 1020 java
- 가운데 글자 가져오기 자바
- 트리의 지름 자바
- 프로그래머스 나누어 떨어지는 숫자 배열 파이썬
- 프로그래머스 나누어 떨어지는 숫자 배열 자바
- 프로그래머스 가운데 글자 가져오기 python
- m1 docker
- 가운데 글자 가져오기 python
- 최단 경로 알고리즘
- 청년 AI Big Data 아카데미 13기
- 가운데 글자 가져오기 파이썬
- codeup 1020 자바
- 최소 스패닝 트리 자바
- 트리의 지름 java
Archives
- Today
- Total
NineTwo meet you
[백준/자바] 14225 부분수열의 합 본문
반응형
문제
수열 S가 주어졌을 때, 수열 S의 부분 수열의 합으로 나올 수 없는 가장 작은 자연수를 구하는 프로그램을 작성하시오.
예를 들어, S = [5, 1, 2]인 경우에 1, 2, 3(=1+2), 5, 6(=1+5), 7(=2+5), 8(=1+2+5)을 만들 수 있다.
하지만, 4는 만들 수 없기 때문에 정답은 4이다.
입력
첫째 줄에 수열 S의 크기 N이 주어진다. (1 ≤ N ≤ 20)
둘째 줄에는 수열 S가 주어진다. S를 이루고 있는 수는 100,000보다 작거나 같은 자연수이다.
출력
첫째 줄에 수열 S의 부분 수열의 합으로 나올 수 없는 가장 작은 자연수를 출력한다.
예제 입력 1
3
5 1 2
예제 출력 1
4
예제 입력 2
3
2 1 4
예제 출력 2
8
예제 입력 3
4
2 1 2 7
예제 출력 3
6
설명
N의 크기는 1 이상 20 이하의 수이기 때문에 조합으로 구하지 않는다.
예제가 다음과 같을때,
4
2 1 3 7
2^(N-1) 이상 2^N미만의 수를 2진수로 변환하며 4글자인 비트 마스크를 구할 수 있다.
여기서 N = 4이기 때문에 8 이상 16 미만의 수를 탐색한다.
(2^N미만인 이유는 2^N은 N+1 자리기 때문이다.)
2진수 | 2진수 반전 | 1 인덱스 합 | 0 인덱스 합 | |
8 | 1000 | 0001 | 2 | 1 + 3 + 7 |
9 | 1001 | 0110 | 2 + 7 | 1 + 3 |
10 | 1010 | 0101 | 2 + 3 | 1 + 7 |
11 | 1011 | 0100 | 2 + 3 + 7 | 1 |
12 | 1100 | 0011 | 2 + 1 | 3 + 7 |
13 | 1101 | 0010 | 2 + 1 + 7 | 3 |
14 | 1110 | 0001 | 2 + 1 + 3 | 7 |
15 | 1111 | 0000 | 2 + 1 + 3 + 7 |
2진수에서 1인 인덱스의 합과 0인 인덱스의 합을 이용해 나올 수 있는 모든 조합을 탐색할 수 있다.
나올 수 있는 수는 중복이 발생할 수 있기 때문에 중복제거를 위해 HashSet을 사용한다.
코드
반응형
'프로그래밍 문제 > 백준' 카테고리의 다른 글
[백준/자바] 16197 두 동전 (0) | 2020.12.30 |
---|---|
[백준/자바] 16198 에너지 모으기 (0) | 2020.12.30 |
[백준/자바] 15661 링크와 스타트 (0) | 2020.12.30 |
[백준/자바] 11816 8진수, 10진수, 16진수 (0) | 2020.12.28 |
[백준/자바] 4458 첫 글자를 대문자로 (0) | 2020.12.28 |
Comments