본문 바로가기

Algorithm/BOJ

(101)
[BOJ-2941][문자열 처리/Map 활용] 크로아티아 알파벳 - Java 문제 바로가기 2941번: 크로아티아 알파벳 예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다. 크로아티아 알파벳 변경 č c= ć c- dž dz= đ d- lj lj nj nj š s= ž z= www.acmicpc.net 간단한 문자열 처리 문제입니다. 정규 표현식이나 Map을 활용하면 아주 간단하게 풀 수 있습니다. // 정규 표현식 사용 import java.io.*; import java.util.*; public class Main { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new Inpu..
[BOJ-11003][슬라이딩 윈도우] 최솟값 찾기 - Java 문제 바로가기 11003번: 최솟값 찾기 N개의 수 A1, A2, ..., AN과 L이 주어진다. Di = Ai-L+1 ~ Ai 중의 최솟값이라고 할 때, D에 저장된 수를 출력하는 프로그램을 작성하시오. 이때, i ≤ 0 인 Ai는 무시하고 D를 구해야 한다. www.acmicpc.net 시간 제한이 굉장히 빽빽합니다. 슬라이딩 윈도우 개념을 적용하면 풀 수 있는데.. 시간을 줄이기 위한 최대한의 노력을 해야합니다. import java.io.*; import java.util.*; public class Main { public static void main(String[] args) throws Exception { input(); } public static void input() throws E..
[BOJ-11659][구간 합] 구간 합 구하기 4 - Java 문제 바로가기 11659번: 구간 합 구하기 4 첫째 줄에 수의 개수 N (1 ≤ N ≤ 100,000), 합을 구해야 하는 횟수 M (1 ≤ M ≤ 100,000)이 주어진다. 둘째 줄에는 N개의 수가 주어진다. 수는 1,000보다 작거나 같은 자연수이다. 셋째 줄부터 M개의 줄에 www.acmicpc.net 수 N개가 주어졌을 때, i번째 수부터 j번째 수까지 합을 구하는 문제입니다. prefix sum을 입력받을 때 구해서 O(N) 타임으로 구할 수 있습니다. import java.io.*; import java.util.*; public class Main { public static void main(String[] args) throws Exception { input(); } public s..
[BOJ-2696][우선순위 큐] 중앙값 구하기 - Java 문제 바로가기 2696번: 중앙값 구하기 첫째 줄에 테스트 케이스의 개수 T(1
[BOJ-11404][APSP/플로이드-와샬] 플로이드 - Java 문제 바로가기 11404번: 플로이드 첫째 줄에 도시의 개수 n이 주어지고 둘째 줄에는 버스의 개수 m이 주어진다. 그리고 셋째 줄부터 m+2줄까지 다음과 같은 버스의 정보가 주어진다. 먼저 처음에는 그 버스의 출발 도시의 번호가 www.acmicpc.net 제목부터 플로이드 입니다. APSP(All Pairs Shortest Path) 알고리즘인 플로이드-와샬 알고리즘을 사용해서 푸는 문제입니다. import java.io.*; import java.util.*; public class Main { static final int MAX = 10000000; static int N, M; static int[][] dist; public static void main(String[] args) throw..
[BOJ-11049][DP] 행렬 곱셈 순서 - Java 문제 바로가기 11049번: 행렬 곱셈 순서 첫째 줄에 입력으로 주어진 행렬을 곱하는데 필요한 곱셈 연산의 최솟값을 출력한다. 정답은 231-1 보다 작거나 같은 자연수이다. 또한, 최악의 순서로 연산해도 연산 횟수가 231-1보다 작거나 같 www.acmicpc.net Chained Matrix Multiplication 문제입니다. M[1, N]을 구해주면 되겠지용! import java.io.*; import java.util.*; public class Main { static int N; static int[] d;// 행열의 행, 열의 개수 (1번 행렬의 행의 수: d[0], 열의 수: d[1]) public static void main(String[] args) throws Exceptio..
[BOJ-2023][백트래킹] 신기한 소수 - Java 문제 바로가기 2023번: 신기한 소수 수빈이가 세상에서 가장 좋아하는 것은 소수이고, 취미는 소수를 가지고 노는 것이다. 요즘 수빈이가 가장 관심있어 하는 소수는 7331이다. 7331은 소수인데, 신기하게도 733도 소수이고, 73도 소수 www.acmicpc.net N 자리 신기한 소수들을 구하는 문제입니다. 신기한 소수란 왼쪽부터 1자리, 2자리, ... , N자리 수 모두 소수인 수입니다. 신기하긴 한데 소수를 갖고 논다니 수빈이도 정상은 아닙니다 import java.io.*; import java.util.*; public class Main { static int N; static List num = new ArrayList(); public static void main(String[] ..
[BOJ-1941][백트래킹/BFS] 소문난 칠공주 - Java 문제 바로가기 1941번: 소문난 칠공주 총 25명의 여학생들로 이루어진 여학생반은 5*5의 정사각형 격자 형태로 자리가 배치되었고, 얼마 지나지 않아 이다솜과 임도연이라는 두 학생이 두각을 나타내며 다른 학생들을 휘어잡기 시작 www.acmicpc.net 다솜파인 소문난 칠공주가 되는 경우의 수를 구하는 문제입니다. 친하게 좀 지내지ㅣ;; import java.io.*; import java.util.*; public class Main { static class Dir{ int y, x; Dir(int y, int x){ this.y = y; this.x = x; } } static char[][] seat = new char[5][5]; static Map map = new HashMap(); //..