본문 바로가기

OJ

(241)
[BOJ] 1306 달려라 홍준 (JAVA) https://www.acmicpc.net/problem/1306 1306번: 달려라 홍준 첫째 줄에는 뛰는 코스의 길이, 즉 칸수 N과 홍준이의 시야의 범위 M이 주어진다. 시야가 M이라고 하면 현재 위치에서 앞뒤로 M-1칸까지 광고판이 보이는 것이다. (1 ≤ M ≤ N ≤ 1,000,000) 두 번째 www.acmicpc.net 세그먼트 트리와 슬라이딩 윈도우를 이용하여 풀 수 있는 문제입니다. import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { static BufferedReader br = new BufferedReader(new Inp..
[BOJ] 13565 침투 (JAVA) https://www.acmicpc.net/problem/13565 13565번: 침투 첫째 줄에는 격자의 크기를 나타내는 M (2 ≤ M ≤ 1,000) 과 N (2 ≤ N ≤ 1,000) 이 주어진다. M줄에 걸쳐서, N개의 0 또는 1 이 공백 없이 주어진다. 0은 전류가 잘 통하는 흰색, 1은 전류가 통하지 않 www.acmicpc.net 기본적인 BFS 문제입니다. 맨 윗줄의 0들에서 시작해서 맨 아랫줄 0에 닿을 수 있으면 YES, 아니면 NO를 출력합니다. import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.LinkedList; import java.util.Queue; import java.uti..
[BOJ] 1806 부분합 (JAVA) https://www.acmicpc.net/problem/1806 1806번: 부분합 첫째 줄에 N (10 ≤ N < 100,000)과 S (0 < S ≤ 100,000,000)가 주어진다. 둘째 줄에는 수열이 주어진다. 수열의 각 원소는 공백으로 구분되어져 있으며, 10,000이하의 자연수이다. www.acmicpc.net 머리와 꼬리의 인덱스를 저장하고 그 사이에 있는 값들의 합을 구해야 합니다. 합이 S보다 크거나 같으면 꼬리를 한 칸 당겨오고, 작으면 머리를 앞으로 한 칸 뻗습니다. import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { pu..
[BOJ] 1726 로봇 (JAVA) https://www.acmicpc.net/problem/1726 1726번: 로봇 많은 공장에서 로봇이 이용되고 있다. 우리 월드 공장의 로봇은 바라보는 방향으로 궤도를 따라 움직이며, 움직이는 방향은 동, 서, 남, 북 가운데 하나이다. 로봇의 이동을 제어하는 명령어는 www.acmicpc.net BFS로 해결할 수 있는 문제입니다. st = new StringTokenizer(br.readLine(), " "); sr = Integer.parseInt(st.nextToken()); sc = Integer.parseInt(st.nextToken()); sd = Integer.parseInt(st.nextToken()); if(sd == 2) sd = 3; else if(sd == 3) sd = 2; ..
[BOJ] 1240 노드사이의 거리 (JAVA) https://www.acmicpc.net/problem/1240 1240번: 노드사이의 거리 N(2≤N≤1,000)개의 노드로 이루어진 트리가 주어지고 M(M≤1,000)개의 두 노드 쌍을 입력받을 때 두 노드 사이의 거리를 출력하라. www.acmicpc.net 단순하게 생각해도 되는 문제입니다. bfs를 한 번 돌고나서 visited를 초기화 하거나 false로 fill하는 게 중요합니다. import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.LinkedList; import java.util.Queue; import java.util.StringTokeni..
[BOJ] 16441 아기돼지와 늑대 (JAVA) https://www.acmicpc.net/problem/16441 16441번: 아기돼지와 늑대 첫 번째 줄에는 격자의 행의 수를 나타내는 N (3 ≤ N ≤ 100) 과 격자의 열의 수를 나타내는 M (3 ≤ M ≤ 100) 이 주어집니다. 두 번째 줄부터 N개의 줄에 지도의 정보를 나타내는 길이가 M인 문자열 www.acmicpc.net BFS 문제입니다. 얼음을 어떻게 미끄러져 갈 것인가, 그 후에 어떻게 할 것인가가 중요한 것 같습니다. import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.LinkedList; import java.util.Queue; import java.util.StringToken..
[BOJ] 23254 나는 기말고사형 인간이야 (JAVA) https://www.acmicpc.net/problem/23254 23254번: 나는 기말고사형 인간이야 192시간 동안 1번 과목을 35시간, 2번 과목을 43시간, 3번 과목을 30시간, 4번 과목을 17시간, 5번 과목을 37시간, 6번 과목을 30시간동안 공부하면 1, 2, 3, 4, 6번 과목은 100점, 5번 과목은 77점, 7번 과목은 www.acmicpc.net 그리디 문제입니다. 우선순위 큐를 이용하여 해결했습니다. Subject 객체의 points가 현재 점수이고, pph는 시간당 얻을 수 있는 점수입니다. import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.PriorityQueue; imp..
[BOJ] 17834 사자와 토끼 (JAVA) https://www.acmicpc.net/problem/17834 17834번: 사자와 토끼 사자와 토끼는 전국적으로 인기를 끌고 있는 재밌는 보드게임이다. 사자와 토끼를 즐기기 위해서는 2명의 플레이어와 1명의 심판이 필요하다. 보드판은 N개의 수풀과 M개의 오솔길로 이루어져 www.acmicpc.net 그래프를 홀짝으로 칠해보는 것이 핵심인 문제입니다. BFS나 DFS를 이용하여 해결할 수 있습니다. import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.LinkedList; import java.util.Queue; import java.util.String..
[BOJ] 1600 말이 되고픈 원숭이 (JAVA) https://www.acmicpc.net/problem/1600 1600번: 말이 되고픈 원숭이 첫째 줄에 정수 K가 주어진다. 둘째 줄에 격자판의 가로길이 W, 세로길이 H가 주어진다. 그 다음 H줄에 걸쳐 W개의 숫자가 주어지는데, 0은 아무것도 없는 평지, 1은 장애물을 뜻한다. 장애물이 있 www.acmicpc.net 말처럼 행동할 수 있는 횟수를 가지고 다니는 것이 핵심입니다. visited 배열은 3차원 배열이고, [말처럼 행동할 수 있는 횟수][행][열]로 선언했습니다. Monkey 객체의 horse 변수가 말처럼 행동할 수 있는 횟수를 저장합니다. import java.io.BufferedReader; import java.io.IOException; import java.io.Input..
[BOJ] 1743 음식물 피하기 (JAVA) https://www.acmicpc.net/problem/1743 1743번: 음식물 피하기 첫째 줄에 통로의 세로 길이 N(1 ≤ N ≤ 100)과 가로 길이 M(1 ≤ M ≤ 100) 그리고 음식물 쓰레기의 개수 K(1 ≤ K ≤ N×M)이 주어진다. 그리고 다음 K개의 줄에 음식물이 떨어진 좌표 (r, c)가 주어진다 www.acmicpc.net 기본적인 BFS 문제입니다. 음식물이 떨어진 곳을 1, 아닌 곳을 0으로 두고 2차원 배열 전체를 탐색하면서 음식물을 발견하면 BFS를 수행하여 최대 크기를 찾아냅니다. import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.LinkedList; import java..