자바 28

[백준] 1208번 자바 부분수열의 합2

문제 출처 https://www.acmicpc.net/problem/1208 1208번: 부분수열의 합 2 첫째 줄에 정수의 개수를 나타내는 N과 정수 S가 주어진다. (1 ≤ N ≤ 40, |S| ≤ 1,000,000) 둘째 줄에 N개의 정수가 빈 칸을 사이에 두고 주어진다. 주어지는 정수의 절댓값은 100,000을 넘지 않는다. www.acmicpc.net 접근 방식 및 풀이 - 1182와 비슷한 문제라고 생각하는 순간 해맨다. -> 같은 알고리즘을 쓰면 시간 초과 발생 - 여러 블로그들을 참고하여 배열의 크기가 크기때문에, 배열을 반으로 나눠 각각 부분합들을 구해준 후 투포인트 알고리즘으로 해결하라는 힌트를 받았다. 참고 블로그 [백준 알고리즘]1208번 부분수열의 합2 백준 알고리즘 부분수열의 합..

[백준] 6603번 자바 로또

문제 출처 https://www.acmicpc.net/problem/6603 6603번: 로또 문제 독일 로또는 {1, 2, ..., 49}에서 수 6개를 고른다. 로또 번호를 선택하는데 사용되는 가장 유명한 전략은 49가지 수 중 k(k>6)개의 수를 골라 집합 S를 만든 다음 그 수만 가지고 번호를 선택하는 것이다. 예를 들어, k=8, S={1,2,3,5,8,13,21,34}인 경우 이 집합 S에서 수를 고를 수 있는 경우의 수는 총 28가지이다. ([1,2,3,5,8,13], [1,2,3,5,8,21], [1,2,3,5,8,34], [1,2 www.acmicpc.net 접근 방식 및 풀이 - 백트래킹 방법, DFS 방법이 있었지만, DFS으로 구현하였다. - DFS로 탐색하다가 6자리 문자열을 다..

[백준] 1806번 부분합

문제 출처 https://www.acmicpc.net/problem/1806 1806번: 부분합 문제 10,000 이하의 자연수로 이루어진 길이 N짜리 수열이 주어진다. 이 수열에서 연속된 수들의 부분합 중에 그 합이 S 이상이 되는 것 중, 가장 짧은 것의 길이를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 N (10 ≤ N < 100,000)과 S (0 < S ≤ 100,000,000)가 주어진다. 둘째 줄에는 수열이 주어진다. 수열의 각 원소는 공백으로 구분되어져 있으며, 10,000이하의 자연수이다. 출력 첫째 줄에 구하고자 하는 최소의 길 www.acmicpc.net 접근 방식 및 풀이 - 투포인트 알고리즘 이용 [Algorithm] - [알고리즘] 투포인트 알고리즘 - 배열의 순서는 움직일수..

[백준] 1644번 자바 소수의 연속합

문제 출처 https://www.acmicpc.net/problem/1644 1644번: 소수의 연속합 문제 하나 이상의 연속된 소수의 합으로 나타낼 수 있는 자연수들이 있다. 몇 가지 자연수의 예를 들어 보면 다음과 같다. 3 : 3 (한 가지) 41 : 2+3+5+7+11+13 = 11+13+17 = 41 (세 가지) 53 : 5+7+11+13+17 = 53 (두 가지) 하지만 연속된 소수의 합으로 나타낼 수 없는 자연수들도 있는데, 20이 그 예이다. 7+13을 계산하면 20이 되기는 하나 7과 13이 연속이 아니기에 적합한 표현이 아니다. 또한 한 www.acmicpc.net 접근 방식 및 풀이 - 주어진 n만큼의 소수를 구한다. - 구한 소수로 더해가며 n만큼 나오면 count를 증가한다. - ..

[백준] 1107번 자바 리모컨

문제 출처 https://www.acmicpc.net/problem/1107 1107번: 리모컨 첫째 줄에 수빈이가 이동하려고 하는 채널 N (0 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 고장난 버튼의 개수 M (0 ≤ M ≤ 10)이 주어진다. 고장난 버튼이 있는 경우에는 셋째 줄에는 고장난 버튼이 주어지며, 같은 버튼이 여러 번 주어지는 경우는 없다. www.acmicpc.net 접근 방식 및 풀이 - 완전탐색 알고리즘을 사용하여 모든 케이스들을 생각해내야 한다. - 조건 1. 100이면 count 0 - 조건 2. 리모콘이 고장 나지 않았으면, 배열의 숫자만큼 또는 리모컨 +- 한 count 중 최소값 - 조건 3. 리모콘이 고장 났으면, 고장난 리모컨으로 누를수 있는 숫자 케이스와 리모..

[백준] 11047번 자바 동전 0

문제 출처 https://www.acmicpc.net/problem/11047 11047번: 동전 0 첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수) www.acmicpc.net 접근 방식 및 풀이 - 오름차순으로 되어 있는 동전을 내림차순으로 받기위해 n-1부터 배열에 다시 담음. - k원과 배열의 동전의 금액중 k가 더 크면 나눌수 있다. - 나눠서 몫은 count에 나머지는 k에 다시 넣는다. 소스 코드 import java.io.BufferedReader; import java.io.IOEx..

[백준] 1744번 자바 수 묶기

문제 출처 https://www.acmicpc.net/problem/1744 1744번: 수 묶기 길이가 N인 수열이 주어졌을 때, 그 수열의 합을 구하려고 한다. 하지만, 그냥 그 수열의 합을 모두 더해서 구하는 것이 아니라, 수열의 두 수를 묶으려고 한다. 어떤 수를 묶으려고 할 때, 위치에 상관없이 묶을 수 있다. 하지만, 같은 위치에 있는 수(자기 자신)를 묶는 것은 불가능하다. 그리고 어떤 수를 묶게 되면, 수열의 합을 구할 때 묶은 수는 서로 곱한 후에 더한다. 예를 들면, 어떤 수열이 {0, 1, 2, 4, 3, 5}일 때, 그냥 이 수열 www.acmicpc.net 접근 방식 및 풀이 - Greedy 알고리즘 이용 - 아래 조건을 만족하는 알고리즘 사용 조건 1. 음수* 음수, 양수*양수 ..

[백준] 2110번 자바 공유기 설치

문제 출처 https://www.acmicpc.net/problem/2110 2110번: 공유기 설치 첫째 줄에 집의 개수 N (2 ≤ N ≤ 200,000)과 공유기의 개수 C (2 ≤ C ≤ N)이 하나 이상의 빈 칸을 사이에 두고 주어진다. 둘째 줄부터 N개의 줄에는 집의 좌표를 나타내는 xi (1 ≤ xi ≤ 1,000,000,000)가 한 줄에 하나씩 주어진다. www.acmicpc.net 접근 방식 및 풀이 - 이분탐색으로 거리의 절반을 기준으로 집을 찾아갔다. - 오늘도 마이구님의 블로그 참고! https://mygumi.tistory.com/301 백준 2110번 공유기 설치 :: 마이구미 이 글은 백준 알고리즘 2110번 "공유기 설치" 를 풀이한다. 풀이 방법으로는 이분(이진) 탐색을 ..