알고리즘
백준 2636 치즈 자바
package backjon; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.util.ArrayDeque; import java.util.Arrays; import java.util.StringTokenizer; public class Main { static int N,M; static int[][] arr; static boolean[][] visited; static ArrayDeque q; static int[] dx = {1,-1,0,0}; static int[] dy = {0,0,1,-1}; public ..
백준 3085 파이썬
https://www.acmicpc.net/problem/3085 3085번: 사탕 게임 예제 3의 경우 4번 행의 Y와 C를 바꾸면 사탕 네 개를 먹을 수 있다. www.acmicpc.net 한 번 바꾼 후 전체를 탐색해서 색이 같으면 count + 1 색이 다르면 초기화를 진행한다. 위에서 아래로 하는 탐색과 아래에서 위로 하는 탐색이 같고 왼쪽에서 오른쪽으로 하는 탐색과 오른쪽에서 왼쪽으로 하는 탐색이 같으므로 이 부분을 배제한다. n = int(input()) graph = [list(input()) for _ in range(n)] dx = [1,0] dy = [0,1] length = 0 def change(x, y, color): for i in range(2): nx = x + dx[i] ..
백준 1541 파이썬
https://www.acmicpc.net/problem/1541 1541번: 잃어버린 괄호 첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다 www.acmicpc.net -앞의 숫자는 다 더하고 -뒤의 숫자만 괄호를 치면 된다. 시키는 대로 괄호를 추가한 뒤 파이썬의 eval함수를 통해 입력받은 문자열을 자동으로 연산하도록 프로그램을 짰다. 앞에 0이 붙은 경우 eval함수가 작동하지 않아서 int로 변환하는 작업을 했다. n = input() num_list = [] s = '' for i in n: if i.isdigit(): s += i else: nu..
백준 1931 파이썬
https://www.acmicpc.net/problem/1931 1931번: 회의실 배정 (1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다. www.acmicpc.net 두 번의 정렬을 하면 된다. 끝나는 시간 기준으로 정렬을 하고 시작시간 기준으로 다시 정렬을 진행하면 된다. 파이썬의 경우 람다식으로 해결할 수 있다. time.sort(key=lambda x: (x[1], x[0])) 이렇게 정렬한 후 입력값은 다음과 같이 바뀐다. [(1, 4), (3, 5), (0, 6), (5, 7), (3, 8), (5, 9), (6, 10), (8, 11), (8, 12), (2, 13), (12, 14)] 정렬된 수를 보면 시작시간이 끝나는 시간보다 크거나 같은 수만 채택하면 된다. ..
백준 13305 주유소 파이썬
https://www.acmicpc.net/problem/13305 13305번: 주유소 표준 입력으로 다음 정보가 주어진다. 첫 번째 줄에는 도시의 개수를 나타내는 정수 N(2 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 인접한 두 도시를 연결하는 도로의 길이가 제일 왼쪽 도로부터 N-1 www.acmicpc.net 각 도시별로 비교해야하는 값은 다음과 같다. 첫 번째 도시라면 첫 번째 도시 주유값을 기준으로 정한다. 다음 도시까지 이동할 기름만 주유한다. 다음 도시와 첫 번째 도시를 비교해서 더 작은 곳의 기름을 주유한다. 만약 첫 번째 도시보다 두 번째 도시가 더 작다면 기준값도 두 번째 도시로 변경한다. 위를 반복해서 해결한다. n = int(input()) length = list(map..
백준 1449 파이썬
https://www.acmicpc.net/problem/1449 1449번: 수리공 항승 첫째 줄에 물이 새는 곳의 개수 N과 테이프의 길이 L이 주어진다. 둘째 줄에는 물이 새는 곳의 위치가 주어진다. N과 L은 1,000보다 작거나 같은 자연수이고, 물이 새는 곳의 위치는 1,000보다 작거나 www.acmicpc.net 예제 4 2 1 2 100 101 물이 새는 곳을 정렬한다. 길이 2짜리 테이프로 가장 왼쪽부터 붙인다면 1,2 한장 100, 101 한장이 필요하다. 테이프를 한 번 붙였을 때 물이 새는 곳을 얼마나 덮을 수 있는지를 구하려면 처음 물이 새는 곳(1)에서 테이프의 길이만큼 더하면 된다. 테이프를 붙일 때 마다 물이 새는 곳의 값을 바꿔주면 해결된다. n, m = map(int, ..