Java

https://www.acmicpc.net/problem/1463 1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. www.acmicpc.net 풀이 사용한 알고리즘 : DP 풀이전략 다이나믹 프로그래밍을 사용해 바텀업 방식으로 풀이하면 되는 문제다. 정수 x에 사용할 수 있는 연산은 3개로, 3으로 나누는 경우, 2로 나누는 경우, 1을 빼는 경우가 있으며 이를 이용해 1을 최종적으로 도출하면 된다. 따라서 기본 세팅값으로 d[0]=0, d[1]=0, d[2]=1, d[3]=1 으로 하고 시작한다. d[i] 는 d[i/3]+1, d[i/2]+1, d[i-1]+1 셋 중 가장 작은 값을 가지면 된다. 따라서 이를 식으로 나타내면 if(i%2==0 && ..
https://www.acmicpc.net/problem/7576 7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토 www.acmicpc.net 풀이 사용한 알고리즘 : BFS 풀이전략 기존 BFS에서 하나의 조건을 추가해야하는 문제이다. 기본적인 BFS 문제에서는 하나의 지점에서 조건이 충족되는 인접한 지점들을 방문하여 부분 집합의 개수를 구하는 것이 목표였다. 또한 전파가 걸리는 시간을 질문하지 않았다. 하지만 위 문제에서는 하나의 지점이 아닌 여러개의 지점에서 동시에 BFS 탐색이 진행되어야 한다. 그래야만 하루 간 ..
https://www.acmicpc.net/problem/1107 1107번: 리모컨 첫째 줄에 수빈이가 이동하려고 하는 채널 N (0 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 고장난 버튼의 개수 M (0 ≤ M ≤ 10)이 주어진다. 고장난 버튼이 있는 경우에는 셋째 줄에는 고장난 버튼이 www.acmicpc.net 풀이 사용한 알고리즘 : DFS, BFS, 중복순열을 사용한 완전탐색 풀이전략 예외처리해야할 내용들이 많아 평균적인 골드5 문제보다 고생한 문제였다. 기본적인 풀이전략은 0~9까지의 원소들 중 제외된 원소를 뺀 나머지 원소들로 중복순열을 생성하고 목표로 하는 값을 생성한 값으로 뺀 뒤, 생성한 값의 자리수를 더하는 것이다. 예로 입력의 결과로 {0,2,4,6,7,8,9}를 제외시..
https://www.acmicpc.net/problem/1759 1759번: 암호 만들기 첫째 줄에 두 정수 L, C가 주어진다. (3 ≤ L ≤ C ≤ 15) 다음 줄에는 C개의 문자들이 공백으로 구분되어 주어진다. 주어지는 문자들은 알파벳 소문자이며, 중복되는 것은 없다. www.acmicpc.net 풀이 사용한 알고리즘 : DFS를 이용한 조합, 백트래킹 풀이전략 조합을 사용하여 가질 수 있는 경우의 수를 모두 구한다. 단, DFS를 사용해 조합을 만들어 가는 과정에서 현재 탐색 노드의 계층이 마지막 최하위 계층과 동일한 경우에서 모음과 자음의 개수가 주어진 조건대로 모음은 한 개 이상이고, 자음은 두 개 이상이어야 한다. 이는 모음의 개수가 한 개 이상이면서 (원하는 결과가 가지는 원소의 개수 ..
https://www.acmicpc.net/problem/10974 10974번: 모든 순열 N이 주어졌을 때, 1부터 N까지의 수로 이루어진 순열을 사전순으로 출력하는 프로그램을 작성하시오. www.acmicpc.net 풀이 사용한 알고리즘 : DFS로 구현한 순열(Permutation) 풀이전략 순열을 사용하여 주어진 원소들 중 가질 수 있는 모든 경우의 수를 찾는다. 이를 그림으로 나타내면 아래와 같다. DFS를 사용해 완전 탐색을 수행하여 위와 같은 구조를 구현한다. 위 그림에서 맨 윗 노드를 0 계층이라고 하면, 맨 아래 노드는 3 계층(Layer)이다. 코드에서 L은 현재 탐색중인 노드의 계층을, R은 최하단의 계층을 뜻하는데 종료조건은 L==R 로, 현재 탐색 중인 노드의 계층이 최하단의 계..
https://www.acmicpc.net/problem/2212 2212번: 센서 첫째 줄에 센서의 개수 N(1 ≤ N ≤ 10,000), 둘째 줄에 집중국의 개수 K(1 ≤ K ≤ 1000)가 주어진다. 셋째 줄에는 N개의 센서의 좌표가 한 개의 정수로 N개 주어진다. 각 좌표 사이에는 빈 칸이 하나 있 www.acmicpc.net 풀이 사용한 알고리즘 : 그리디, 정렬 풀이전략 먼저 문제에 대한 이해가 어렵기 때문에 아래 그림을 통해 문제 설명부터 하도록 하겠습니다.🎨 위 그림처럼 입력받은 센서들을 오름차순으로 정렬한 뒤에, K개의 집중국을 통해 최소 수신 가능 범위를 구하는 문제입니다. 이를 수학적으로 쉽게 나타내면 아래와 같습니다. 먼저 센서 간의 격차를 구한 뒤 이를 오름차순으로 정렬시킵니다...
https://www.acmicpc.net/problem/13549 13549번: 숨바꼭질 3 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 때 www.acmicpc.net 풀이 사용한 알고리즘 : 다익스트라 풀이전략 이동할 때마다 드는 비용이 순간이동시에 0, 좌우 이동시에 1이 든다. 이동할 때 드는 비용이 모두 같은 경우에는 너비우선탐색(BFS)를 사용하겠지만 해당 문제에서는 그렇지 않기 때문에 다익스트라를 사용하여 문제를 풀이한다. 다익스트라에서는 우선순위 큐를 사용하는데, 이 문제에서는 가장 적은 비용으로 특정 위치에 도..
https://www.acmicpc.net/problem/1753 1753번: 최단경로 첫째 줄에 정점의 개수 V와 간선의 개수 E가 주어진다. (1 ≤ V ≤ 20,000, 1 ≤ E ≤ 300,000) 모든 정점에는 1부터 V까지 번호가 매겨져 있다고 가정한다. 둘째 줄에는 시작 정점의 번호 K(1 ≤ K ≤ V)가 www.acmicpc.net 풀이 사용한 알고리즘 : 다익스트라 풀이전략 하나의 시작점에서 모든 노드를 가는데 필요한 최소값을 구하는 문제이다. 전형적인 다익스트라 사용 문제로, 자바를 사용한 경우 목표 지점과 목표 지점까지의 비용이 들어가는 클래스를 추가로 사용하면 된다. 동작 과정은 다음과 같다. 1. 출발 노드 설정 2. 최단 거리 테이블 초기화(모두 무한(1e9)으로 설정) 3. ..
https://www.acmicpc.net/problem/1932 1932번: 정수 삼각형 첫째 줄에 삼각형의 크기 n(1 ≤ n ≤ 500)이 주어지고, 둘째 줄부터 n+1번째 줄까지 정수 삼각형이 주어진다. www.acmicpc.net 풀이 사용한 알고리즘 : DP 풀이전략 arr[i][j]는 i행 i열에 입력된 값을 의미한다. d[i][j]는 i행 i열에서 가질 수 있는 1행에서부터 덧셈된 합의 최대값을 의미한다. 먼저 삼각형의 크기를 나타내는 n의 범위가 1
· JAVA
Iterator란? ArrayList, HashSet과 같은 컬렉션을 반복하는 데 사용할 수 있는 인터페이스 객체 Iterator 인터페이스 public interface Iterator { boolean hasNext(); // 현재 위치에 객체가 존재하는지 확인해주는 메소드 Object next(); // 다음 객체를 가리키도록 하는 메소드 void remove(); // 현재 위치의 객체를 삭제하는 메소드 } 사용법 import java.util.ArrayList; import java.util.Iterator; public class Main { public static void main(String[] args) { // 컬렉션 생성 ArrayList problems = new ArrayList..
째로스
'Java' 태그의 글 목록 (5 Page)