목록Algorithm (45)
in.add()
문제 링크 : https://www.acmicpc.net/problem/14503 14503번: 로봇 청소기 로봇 청소기가 주어졌을 때, 청소하는 영역의 개수를 구하는 프로그램을 작성하시오. 로봇 청소기가 있는 장소는 N×M 크기의 직사각형으로 나타낼 수 있으며, 1×1크기의 정사각형 칸으로 나누어 www.acmicpc.net 문제 해결 방법 문제에서 주어진 대로 재귀로 시뮬레이션 구현했다. import java.util.Scanner; public class Main { static int N, M, r, c, d, count; static int[][] map; static int[] dr = {-1, 0, 1, 0}; static int[] dc = {0, 1, 0, -1}; public stati..
문제 링크 : https://www.acmicpc.net/problem/2293 2293번: 동전 1 첫째 줄에 n, k가 주어진다. (1 ≤ n ≤ 100, 1 ≤ k ≤ 10,000) 다음 n개의 줄에는 각각의 동전의 가치가 주어진다. 동전의 가치는 100,000보다 작거나 같은 자연수이다. www.acmicpc.net 문제 해결 방법 DP로 구현했다. import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int k = sc.nextInt(); int[] coin = new int[n]; for ..
문제 링크 : https://www.acmicpc.net/problem/14442 14442번: 벽 부수고 이동하기 2 첫째 줄에 N(1 ≤ N ≤ 1,000), M(1 ≤ M ≤ 1,000), K(1 ≤ K ≤ 10)이 주어진다. 다음 N개의 줄에 M개의 숫자로 맵이 주어진다. (1, 1)과 (N, M)은 항상 0이라고 가정하자. www.acmicpc.net 문제 해결 방법 벽 부수고 이동하기에서 K가 추가됐다. 벽 부수고 이동하기에서 visit 배열의 세 번째 값이 0 이면 벽을 안 부순 경우, 1 이면 벽을 부순 경우로 사용했다. 벽 부수고 이동하기 2에서는 visit 배열을 다음과 같이 boolean[][][] visited = new boolean[N][M][K + 1]; 선언하여 세번째 값으로..
문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/1844 코딩테스트 연습 - 게임 맵 최단거리 [[1,0,1,1,1],[1,0,1,0,1],[1,0,1,1,1],[1,1,1,0,1],[0,0,0,0,1]] 11 [[1,0,1,1,1],[1,0,1,0,1],[1,0,1,1,1],[1,1,1,0,0],[0,0,0,0,1]] -1 programmers.co.kr 문제 해결 방법 bfs! import java.util.*; class Solution { class Node { int x; int y; int cnt; public Node(int x, int y, int cnt) { this.x = x; this.y = y; this.cnt = cnt; }..
문제 링크 : https://www.acmicpc.net/problem/20055 20055번: 컨베이어 벨트 위의 로봇 길이가 N인 컨베이어 벨트가 있고, 길이가 2N인 벨트가 이 컨베이어 벨트를 위아래로 감싸며 돌고 있다. 벨트는 길이 1 간격으로 2N개의 칸으로 나뉘어져 있으며, 각 칸에는 아래 그림과 같이 1부 www.acmicpc.net 문제 해결 방법 원형 큐와 비슷하게 작동하도록 구현했다. import java.util.Scanner; public class Main { static int N, K, left, right; static int[] belt; static boolean on[]; public static void main(String[] args) { Scanner sc = n..
문제 링크 : https://www.acmicpc.net/problem/1991 1991번: 트리 순회 첫째 줄에는 이진 트리의 노드의 개수 N(1 ≤ N ≤ 26)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 노드와 그의 왼쪽 자식 노드, 오른쪽 자식 노드가 주어진다. 노드의 이름은 A부터 차례대로 알파 www.acmicpc.net 문제 해결 방법 재귀로 트리 순회 구현했다. import java.util.ArrayList; import java.util.Arrays; import java.util.Scanner; public class Main { static class Node { char data; char left; char right; public Node(char data, char lef..
문제 링크 : 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..