목록Algorithm (77)
Development Palette

2178번: 미로 탐색 첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력으로 주어진다. www.acmicpc.net package com.hotfive.workbook.b2178_미로탐색; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.*; public class Main { static int R; static int C; static int [][] map; static int [][] count; static boolean [][] visited; // ..

맨해튼 거리 - 위키백과, 우리 모두의 백과사전 맨해튼 거리(Manhattan distance, 혹은 택시 거리, L1 거리, 시가지 거리,Taxicab geometry)는 19세기의 수학자 헤르만 민코프스키가 고안한 용어로, 보통 유클리드 기하학의 거리 공간을 좌표에 표시된 두 ko.wikipedia.org 맨해튼 거리와 유클리드 거리의 비교 맨해튼 거리인 빨간색, 파란색, 노란색 선의 길이는 모두 12이며 가장 짧은 맨해튼 거리이다. 유클리드 거리인 초록색 선의 길이는 6 sqrt(2) = 8.49이므로 네 선 중에서 가장 길이가 짧다. 좌표 (x1, y1) 와 (x2, y2) 사이의 맨해튼 거리는 |x1 - x2| + |y1 - y2| 이다. 참고로 유클리드 거리는 단순히 피타고라스 공식을 이용한 ..

package com.hotfive.workbook.b1260_DFS와BFS; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.*; //https://www.acmicpc.net/problem/1260 public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.read..

2636번: 치즈 아래 과 같이 정사각형 칸들로 이루어진 사각형 모양의 판이 있고, 그 위에 얇은 치즈(회색으로 표시된 부분)가 놓여 있다. 판의 가장자리(에서 네모 칸에 X친 부분)에는 치즈가 놓 www.acmicpc.net 다른 분의 코드를 참고해서 BFS로 풀었는데.. BFS ㅠㅠ BFS문제를 더 많이 풀어봐야겠다,,,,, package w0915.b2636_치즈; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.LinkedList; import java.util.Queue; import java.util.StringTokenizer; // BFS pu..

9461번: 파도반 수열 오른쪽 그림과 같이 삼각형이 나선 모양으로 놓여져 있다. 첫 삼각형은 정삼각형으로 변의 길이는 1이다. 그 다음에는 다음과 같은 과정으로 정삼각형을 계속 추가한다. 나선에서 가장 긴 변의 www.acmicpc.net package com.hotfive.workbook.b9461_파도반수열; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws IOException { // 삼각형 갯수가 N개일 때 변의 길이는? BufferedReader br = new..

1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. www.acmicpc.net package w0914.b1463_1로만들기; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; /* 1. X가 3으로 나누어 떨어지면, 3으로 나눈다. 2. X가 2로 나누어 떨어지면, 2로 나눈다. 3. 1을 뺀다. 정수 N이 주어졌을 때, 위와 같은 연산 세 개를 적절히 사용해서 1을 만들려고 한다. 연산을 사용하는 횟수의 최솟값을 출력하시오. */ //ans[2] = 1; //숫자 2 가 주어졌을 때, 연산하는 가장 최소의 방법은 1개이다 (1빼기 또는..

1149번: RGB거리 첫째 줄에 집의 수 N(2 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 각 집을 빨강, 초록, 파랑으로 칠하는 비용이 1번 집부터 한 줄에 하나씩 주어진다. 집을 칠하는 비용은 1,000보다 작거나 www.acmicpc.net package w0914.b1149_RGB거리; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; //26 57 13 //i(2 ≤ i ≤ N-1)번 집의 색은 i-1번, i+1번 집의 색과 같지 않아야 한다. public class Main { public stat..

N의 범위가 10만 이하까지 가능하기 때문에 1초의 제한(1억)이 있는 이 문제에서는 2중 for문(1000억)을 하지 못한다. 처음의 K만큼의 합을 저장하고 재사용하는 방식을 이용하면 한번의 반복문으로 풀 수 있다. 처음 합을 저장하고 다음 수열의 합을 구할 때, 미리 저장한 합에서 첫번째로 더한값을 다시 빼주고 K 다음 값을 더해주면 된다. package com.testex.b2559_수열; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; // 시간 복잡도 제한 때문에 2중 for문 X // 중복되는 합을 이용하기 publi..