목록Algorithm/BOJ (27)
in.add()
문제 링크 : https://www.acmicpc.net/problem/2579 2579번: 계단 오르기 계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. 과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점 www.acmicpc.net 문제 해결 방법 DP! DP다 싶으면 차근차근 시뮬레이션 해보기. import java.util.Scanner; public class Main { static int N; static int[] arr, dp; public static void main(String[] args) { Scanner sc = new Scanner(System.in); N = sc.nextInt(); arr = n..
문제 링크 : https://www.acmicpc.net/problem/2206 2206번: 벽 부수고 이동하기 N×M의 행렬로 표현되는 맵이 있다. 맵에서 0은 이동할 수 있는 곳을 나타내고, 1은 이동할 수 없는 벽이 있는 곳을 나타낸다. 당신은 (1, 1)에서 (N, M)의 위치까지 이동하려 하는데, 이때 최단 경로 www.acmicpc.net 문제 해결 방법 bfs를 사용해 탐색했고 3차원 boolean배열을 사용하여 visit처리했다. visit 배열의 세번째 값이 0 이면 벽을 안부순 경우, 1 이면 벽을 부순경우. import java.util.LinkedList; import java.util.Queue; import java.util.Scanner; public class Main { s..
문제 링크 : https://www.acmicpc.net/problem/15961 15961번: 회전 초밥 첫 번째 줄에는 회전 초밥 벨트에 놓인 접시의 수 N, 초밥의 가짓수 d, 연속해서 먹는 접시의 수 k, 쿠폰 번호 c가 각각 하나의 빈 칸을 사이에 두고 주어진다. 단, 2 ≤ N ≤ 3,000,000, 2 ≤ d ≤ 3,000, 2 www.acmicpc.net 문제 해결 방법 슬라이딩 윈도우를 사용해 구현했다. 처음 k개를 먹고 쿠폰 처리를 안 할 경우 답이 제대로 나오지 않지만, 맞았다고 뜬다. 이 부분에 대한 테스트 케이스가 없는 것 같다. import java.util.*; public class Main { static int N, d, k, c; static int[] sushi; pu..
문제 링크 : https://www.acmicpc.net/problem/1931 1931번: 회의실 배정 (1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다. www.acmicpc.net 문제 해결 방법 우선 끝나는 시간이 빠른 순서로 정렬했다. 끝나는 시간이 같다면 빨리 시작하는 회의가 우선이다. 처음부터 보면서 끝난 시간을 last 변수에 넣고 그 이후에 시작하는 회의가 있다면 last를 갱신해준다. 갱신할 때 answer++ import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int N = sc.nextInt(); int..
문제 링크 : https://www.acmicpc.net/problem/1194 1194번: 달이 차오른다, 가자. 첫째 줄에 미로의 세로 크기 N과 가로 크기 M이 주어진다. (1 ≤ N, M ≤ 50) 둘째 줄부터 N개의 줄에 미로의 모양이 주어진다. 같은 타입의 열쇠가 여러 개 있을 수 있고, 문도 마찬가지이다. 그리고, www.acmicpc.net 문제 해결 방법 bfs와 비트마스킹을 사용하여 구현했다. keys 배열을 생각해내는데 오래 걸렸다. "abcdef" 키 에서 a 키를 갖고 있다면 000001 a, d키를 갖고 있다면 001001로 비트마스킹 처리한 값을 keys 배열의 세 번째 index 값으로 접근한다. package com.BOJ; import java.util.LinkedList..
문제 링크 : https://www.acmicpc.net/problem/1697 1697번: 숨바꼭질 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 www.acmicpc.net 문제 해결 방법 bfs를 사용해서 구현했다. 2%쯤에서 실패가 떴는데, N == K 일 때 바로 끝내도록 해서 통과할 수 있었다. import java.util.LinkedList; import java.util.Queue; import java.util.Scanner; public class Main { static int N, K, answer; sta..
문제 링크 : https://www.acmicpc.net/problem/16928 16928번: 뱀과 사다리 게임 첫째 줄에 게임판에 있는 사다리의 수 N(1 ≤ N ≤ 15)과 뱀의 수 M(1 ≤ M ≤ 15)이 주어진다. 둘째 줄부터 N개의 줄에는 사다리의 정보를 의미하는 x, y (x < y)가 주어진다. x번 칸에 도착하면, y번 칸으 www.acmicpc.net 문제 해결 방법 BFS로 구현했다. package com.BOJ; import java.util.HashMap; import java.util.LinkedList; import java.util.Queue; import java.util.Scanner; public class boj16928 { static HashMap map; pub..
문제 링크 : https://www.acmicpc.net/problem/2667 2667번: 단지번호붙이기 과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여 www.acmicpc.net 문제 해결 방법 BFS로 구현했다. import java.util.*; public class Main { static int N, aptCnt; static int[][] map; static int[] dx = {1, 0, -1, 0}; static int[] dy = {0, 1, 0, -1}; static PriorityQueue answerList; public static v..