https://www.acmicpc.net/problem/10819 10819번: 차이를 최대로 첫째 줄에 N (3 ≤ N ≤ 8)이 주어진다. 둘째 줄에는 배열 A에 들어있는 정수가 주어진다. 배열에 들어있는 정수는 -100보다 크거나 같고, 100보다 작거나 같다. www.acmicpc.net [풀이] 브루트포스 유형의 문제입니다. boolean 배열인 visited 변수를 이용해서 재귀적으로 탐색합니다. 탐색할 때 새로운 배열을 newArr변수에 담으면서 진행합니다. depth 변수가 N과 같아질 때 새로운 배열인 newArr에 담겨져있는 값들을 이용해 최대값을 구합니다. [코드] import java.io.BufferedReader; import java.io.IOException; import ..
https://www.acmicpc.net/problem/1002 1002번: 터렛 각 테스트 케이스마다 류재명이 있을 수 있는 위치의 수를 출력한다. 만약 류재명이 있을 수 있는 위치의 개수가 무한대일 경우에는 -1을 출력한다. www.acmicpc.net [풀이] 거리를 구하는 공식 및 두 원이 서로 접하는 경우를 구분하여 푸는 문제였습니다. 반지름이 r1인 원과 r2인 원의 접점의 개수를 찾아야 한다. 두 원의 중심이 같고 반지름도 같을 경우 -> 무한 두 점 사이의 거리가 두 반지름의 합보다 큰 경우 -> 0 한 원이 다른 원 안에 있을 때 안에 있는 원의 반지름이 밖에 있는 원보다 반지름이 작을 경우 -> 0 두 원이 내접하는 경우 -> 1 두 원이 외접하는 경우 -> 1 [코드] import ..
https://www.acmicpc.net/problem/16198 16198번: 에너지 모으기 N개의 에너지 구슬이 일렬로 놓여져 있고, 에너지 구슬을 이용해서 에너지를 모으려고 한다. i번째 에너지 구슬의 무게는 Wi이고, 에너지를 모으는 방법은 다음과 같으며, 반복해서 사용할 수 있 www.acmicpc.net [풀이] 브루트 포스 유형의 문제였습니다. 값을 삽입 / 삭제가 자유롭게 되야하므로 ArrayList를 전역변수로 선언하여 사용했습니다. i번째 값을 제거하고, 모은 에너지를 다시 i번째 인덱스에 넣어 재귀함수를 구현합니다. 이러한 과정을 DFS 방식을 이용해서 구하면 풀 수 있습니다. [코드] import java.io.BufferedReader; import java.io.IOExcept..
https://www.acmicpc.net/problem/10026 10026번: 적록색약 적록색약은 빨간색과 초록색의 차이를 거의 느끼지 못한다. 따라서, 적록색약인 사람이 보는 그림은 아닌 사람이 보는 그림과는 좀 다를 수 있다. 크기가 N×N인 그리드의 각 칸에 R(빨강), G(초록) www.acmicpc.net [풀이] DFS 유형의 문제였습니다. DFS를 적록색약인 경우와 적록색약이 아닌 경우를 구분해서 메인 메소드에서 구현합니다. 처음에는, 아닌 경우이므로 일반적인 DFS 형식으로 구현하고 이후, visited 2차원 배열은 초기화 및 색깔에 대한 조건을 추가해서 영역의 개수를 세야 합니다. [추가] Arrays.fill() 메소드를 사용하였는데 java.lang.ArrayStoreExcept..
https://www.acmicpc.net/problem/2002 2002번: 추월 입력은 총 2N+1개의 줄로 이루어져 있다. 첫 줄에는 차의 대수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 대근이가 적은 차량 번호 목록이 주어지고, N+2째 줄부터 N개의 줄에는 영식이 www.acmicpc.net [풀이] 해시맵과 관련한 자료구조 유형의 문제였습니다. 첫번째 N개의 차를 HashMap 자료구조를 이용해서 순서를 저장합니다. 다음 N개의 차를 입력받으면서 앞서 map 변수에 저장했던 value값을 배열에 저장합니다. 이후, 배열을 앞에서부터 하나씩 확인하며 앞이 더 큰수가 존재하는지 확인합니다. 만약, 더 큰수가 앞에 존재한다면, answer 변수에 1을 더한 후 break문..
https://www.acmicpc.net/problem/1052 1052번: 물병 지민이는 N개의 물병을 가지고 있다. 각 물병에는 물을 무한대로 부을 수 있다. 처음에 모든 물병에는 물이 1리터씩 들어있다. 지민이는 이 물병을 또 다른 장소로 옮기려고 한다. 지민이는 한 번 www.acmicpc.net [풀이] 다수의 블로그에서 비트마스킹 유형의 문제라고 알려주지만, 저는 비트마스킹이 아닌 반복문을 이용해서 풀었습니다. 먼저, N이 K보다 작을 경우에는 더 구매할 필요가 없기 때문에 0을 반환합니다. N이 2일때부터 하나씩 나열을 해보겠습니다. 여기서, 물병을 합칠 때 문제에서 합치는 방식을 최대한 한다고 가정하겠습니다. 이렇게 진행할 경우, N이 2진수일 때 1이 되는 것을 확인 할 수 있습니다. ..