본문 바로가기

분류 전체보기

(215)
백준 1303 전쟁 - 전투 (Java) 1. 문제 링크 1303번: 전쟁 - 전투 첫째 줄에는 전쟁터의 가로 크기 N, 세로 크기 M(1 ≤ N, M ≤ 100)이 주어진다. 그 다음 두 번째 줄에서 M+1번째 줄에는 각각 (X, Y)에 있는 병사들의 옷색이 띄어쓰기 없이 주어진다. 모든 자리에는 www.acmicpc.net 2. 문제 및 입출력예제 3. 문제 풀이 입력이 W와 B 2개로 구성되어 있어서 boolean 배열로 만들었다. 아군의 경우와 적군의 경우를 별도로 탐색했다. 아군인 경우에는 true이면서 방문하지 않은 곳을 탐색 시작으로 한다. bfs에서는 사방 탐색을 진행하는데 범위 안에 있으면서 방문하지 않은 곳을 탐색한다. 큐에서 꺼낸 수만큼이 연결되어 있는 것으로 그 수를 반환한다. sum에 그 수의 제곱만큼씩 더해 위력의 합을..
백준 1461 도서관 (Java) 1. 문제 링크 1461번: 도서관 세준이는 도서관에서 일한다. 도서관의 개방시간이 끝나서 세준이는 사람들이 마구 놓은 책을 다시 가져다 놓아야 한다. 세준이는 현재 0에 있고, 사람들이 마구 놓은 책도 전부 0에 있다. 각 책 www.acmicpc.net 2. 문제 및 입출력예제 3. 문제 풀이 1. 책의 위치를 입력받으면서 양수인 경우와 음수인 경우를 따로 저장한다. 2. 양수와 음수 리스트를 정렬한다. 3. go 를 이용해서 거리를 구한다. 3-1. 양수, 음수 따로 한다. 3-2. 한 번에 갈 수 있는 M번째마다 이동하는 거리의 2배를 더한다. (갔다 왔다) 4. 위치 중 가장 멀리있는 값을 마지막으로 가기 때문에 결과에서 뺀다. 4. 코드 import java.io.BufferedReader; ..
백준 11724 연결 요소의 개수 (Java) 1. 문제 링크 11724번: 연결 요소의 개수 첫째 줄에 정점의 개수 N과 간선의 개수 M이 주어진다. (1 ≤ N ≤ 1,000, 0 ≤ M ≤ N×(N-1)/2) 둘째 줄부터 M개의 줄에 간선의 양 끝점 u와 v가 주어진다. (1 ≤ u, v ≤ N, u ≠ v) 같은 간선은 한 번만 주 www.acmicpc.net 2. 문제 및 입출력예제 3. 문제 풀이 1. Node에서 num과 link로 입력받은 간선을 연결시킨다. 2. 방향 없는 그래프라 배열에서 노드 2개 전부를 연결시킨다. 3. dfs 탐색으로 연결 요소의 개수를 파악한다. 4. 코드 import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.IOExce..
백준 1459 걷기 (Java) 1. 문제 링크 1459번: 걷기 세준이는 학교에서 집으로 가려고 한다. 도시의 크기는 무한대이고, 도시의 세로 도로는 모든 정수 x좌표마다 있고, 가로 도로는 모든 정수 y좌표마다 있다. 세준이는 현재 (0, 0)에 있다. 그리고 ( www.acmicpc.net 2. 문제 및 입출력예제 3. 문제 풀이 처음에는 직진이랑 대각선만 비교하고 구했다 그리고 x나 y가 남아있는 경우가 있으니 직선 시간을 더하고 근대 2 0인 예제가 틀리길래 봤더니 대각선으로 갔다가 오는 방법도 있어 최소 거리만큼 대각선을 가는 방법을 알게 되었다 그래서 여러 경우를 나눠 문제를 풀었다 직선으로 한 블럭의 가로 세로를 가는게 대각선보다 적은 시간이 걸리는 경우 대각선이 직선보다 작아 최대한 대각선으로 가는 경우(직선으로 갈 수..
백준 2529 부등호 (Java) 1. 문제 링크 2529번: 부등호 여러분은 제시된 부등호 관계를 만족하는 k+1 자리의 최대, 최소 정수를 첫째 줄과 둘째 줄에 각각 출력해야 한다. 단 아래 예(1)과 같이 첫 자리가 0인 경우도 정수에 포함되어야 한다. 모든 입력 www.acmicpc.net 2. 문제 및 입출력예제 3. 문제 풀이 1. k+1개를 뽑아서 순열을 만든다. 2. 순열에서 나온 숫자들을 부등호랑 비교하면서 완탐한다 3. 처음부터 시작해서 최솟값을 찾고, 뒤에서부터 시작해서 최댓값을 찾는다. 경우의 수가 너무 많아서 각 자리별로 최소 이정도는 와야한다의 수를 찾고 싶었는데, 랑 > < 의 경우에 탐색 순서가 달라서 포기했다.. 4. 코드 import java.io.BufferedReader; import java...
백준 22251 빌런 호석 (Java) 1. 문제 링크 https://www.acmicpc.net/problem/22251 22251번: 빌런 호석 LED를 2개까지 바꿀 수 있을 때, 5층에서 3층, 6층, 8층, 그리고 9층으로 바꿔버릴 수 있다. www.acmicpc.net 2. 문제 및 입출력예제 3. 문제 풀이 1. 7세그먼트에서 각 숫자가 다른 숫자가 되려면 몇 번을 반전해야 하는 지 num 배열에 저장했다. 2. dfs 방식으로 반전 최대 개수나 최대 층을 넘어서는 경우에 return 했다. 3. 자리수가 동일해진 경우 return하는데 0층인 경우를 제외하고는 결과에 +1을 한다. 4. dfs 안에서 0~9까지 가능한 숫자로 만들 수 있는 숫자를 만들어 dfs를 반복한다. 4. 코드 import java.io.BufferedRe..
백준 9935 문자열 폭발 (Java) 1. 문제 링크 9935번: 문자열 폭발 첫째 줄에 문자열이 주어진다. 문자열의 길이는 1보다 크거나 같고, 1,000,000보다 작거나 같다. 둘째 줄에 폭발 문자열이 주어진다. 길이는 1보다 크거나 같고, 36보다 작거나 같다. 두 문자열은 모 www.acmicpc.net 2. 문제 및 입출력예제 3. 문제 풀이 1. 입력받은 문자열을 스택에 넣으면서 진행한다. 2. 지금 들어오는 문자가 폭발 문자열의 마지막 글자와 같은 경우 확인한다. 3. 폭발 문자열 길이만큼 확인하면서 뽑아서 temp라는 다른 스택에 넣어둔다. 3-1. 전부 폭발 문자열이면 그 상태로 다음 문자로 넘어간다. 3-2. 폭발 문자열이 아닌 문자가 나오면 temp에 넣어둔 문자를 다시 스택에 넣는다. 4. 전부 끝나면 stack에 있..
백준 16463 13일의 금요일 (Java) 1. 문제 링크 https://www.acmicpc.net/problem/16463 16463번: 13일의 금요일 재운이는 이 구역의 소문난 오컬트 매니아다. 늘 도서관에서 오컬트 서적을 읽고 외계문물 스터디에 참여하던 재운이는 어느 날 엄청난 소문을 듣게 되었다. 소문의 정체는 지구의 미래에 관한 www.acmicpc.net 2. 문제 및 입출력예제 3. 문제 풀이 1. 월별 날짜를 배열에 저장해둔다. 2. N년까지 가면서 처음에 13일로 시작한 날짜가 금요일인지 판단한다. 2-1. 2019년 1월 첫 금요일이 4일이어서 7로 나눈 나머지가 4인 경우를 찾았다. 3. 월별 일수를 더한다. 4. 윤년인 경우에는 일수에 1을 더한다. 4. 코드 import java.io.BufferedReader; imp..