Seren dev's blog
article thumbnail
[백준] 2800번 : 괄호 제거 - 자바[Java]
Algorithm 문제 풀이/백준 2023. 10. 16. 18:15

https://www.acmicpc.net/problem/2800 2800번: 괄호 제거 첫째 줄에 음이 아닌 정수로 이루어진 수식이 주어진다. 이 수식은 괄호가 올바르게 쳐져있다. 숫자, '+', '*', '-', '/', '(', ')'로만 이루어져 있다. 수식의 길이는 최대 200이고, 괄호 쌍은 적어도 1개 www.acmicpc.net 입력 첫째 줄에 음이 아닌 정수로 이루어진 수식이 주어진다. 이 수식은 괄호가 올바르게 쳐져있다. 숫자, '+', '*', '-', '/', '(', ')'로만 이루어져 있다. 수식의 길이는 최대 200이고, 괄호 쌍은 적어도 1개, 많아야 10개이다. 출력 올바른 괄호 쌍을 제거해서 나올 수 있는 서로 다른 식을 사전 순으로 출력한다. 풀이 스택 자료구조를 사용하..

article thumbnail
[백준] 2503번 : 숫자 야구 - 자바[Java]
Algorithm 문제 풀이/백준 2023. 10. 13. 18:47

https://www.acmicpc.net/problem/2503 2503번: 숫자 야구 첫째 줄에는 민혁이가 영수에게 몇 번이나 질문을 했는지를 나타내는 1 이상 100 이하의 자연수 N이 주어진다. 이어지는 N개의 줄에는 각 줄마다 민혁이가 질문한 세 자리 수와 영수가 답한 스트 www.acmicpc.net 풀이 완전탐색으로 풀었다. 1부터 9까지 서로 다른 숫자 3개로 구성된 세 자리의 숫자가 답에서 말한 조건과 일치하는지 검사하고, 모든 답들과 일치한다면 카운트한다. 코드 import java.util.*; import java.io.*; public class Main { static class Answer { String number; int strike; int ball; public Ans..

article thumbnail
[백준] 20057번 : 마법사 상어와 토네이도 - 자바[Java]
Algorithm 문제 풀이/백준 2023. 10. 11. 17:49

https://www.acmicpc.net/problem/20057 20057번: 마법사 상어와 토네이도 마법사 상어가 토네이도를 배웠고, 오늘은 토네이도를 크기가 N×N인 격자로 나누어진 모래밭에서 연습하려고 한다. 위치 (r, c)는 격자의 r행 c열을 의미하고, A[r][c]는 (r, c)에 있는 모래의 양을 www.acmicpc.net 풀이 토네이도는 좌향부터 시작해서 좌, 하, 우, 상 순서대로 방향을 바꾸고, 1칸, 1칸, 2칸, 2칸... n-2칸, n-2칸, n-1칸, n-1칸, n-1칸을 이동한다. 즉, 각 칸 수마다 2번 이동하고 마지막 n-1칸을 이동할 때는 3번 이동한다. 토네이도가 이동할 때마다 모래가 이동하는 위치와 비율을 3차원 배열을 통해 저장한다. // 방향: 좌, 하, 우..

article thumbnail
[백준] 21610번 : 마법사 상어와 비바라기 - 자바[Java]

https://www.acmicpc.net/problem/21610 21610번: 마법사 상어와 비바라기 마법사 상어는 파이어볼, 토네이도, 파이어스톰, 물복사버그 마법을 할 수 있다. 오늘 새로 배운 마법은 비바라기이다. 비바라기를 시전하면 하늘에 비구름을 만들 수 있다. 오늘은 비바라기 www.acmicpc.net 풀이 격자마다 저장된 물의 양을 나타낼 int[][] map과 구름 위치를 저장할 큐 Queue clouds를 생성한다. Pair 클래스에 equals()와 hashCode()를 오버라이드한 이유는 이후에 설명하겠다. static class Pair { int x, y; public Pair(int x, int y) { this.x = x; this.y = y; } @Override pub..

article thumbnail
[백준] 1916번 : 최소비용 구하기(다익스트라) - 자바[Java]

https://www.acmicpc.net/problem/1916 1916번: 최소비용 구하기 첫째 줄에 도시의 개수 N(1 ≤ N ≤ 1,000)이 주어지고 둘째 줄에는 버스의 개수 M(1 ≤ M ≤ 100,000)이 주어진다. 그리고 셋째 줄부터 M+2줄까지 다음과 같은 버스의 정보가 주어진다. 먼저 처음에는 그 www.acmicpc.net 풀이 기본적인 그래프 최단거리 문제다. 그래프 최단거리 알고리즘으로는 다익스트라, 벨만포드, 플로이드-와샬이 있다. 1

article thumbnail
[백준] 15683번 : 감시 - 자바[Java]

https://www.acmicpc.net/problem/15683 15683번: 감시 스타트링크의 사무실은 1×1크기의 정사각형으로 나누어져 있는 N×M 크기의 직사각형으로 나타낼 수 있다. 사무실에는 총 K개의 CCTV가 설치되어져 있는데, CCTV는 5가지 종류가 있다. 각 CCTV가 감 www.acmicpc.net 풀이 완전탐색으로 CCTV의 방향이 될 수 있는 모든 경우의 수를 구하여 그 중 사각지대가 최소인 경우의 크기를 구하였다. 완전탐색(재귀)로 모든 경우의 수를 구하므로 다음 변수들을 전역변수로 선언하였다. - 사무실 크기 n, m - 사무질 정보를 저장하는 rooms[n][m]을 생성 - 사각지대의 최소 크기를 저장하는 minUnwatchRoomCnt를 64로 초기화 - CCTV의 번호..

article thumbnail
[백준] 17140번 : 이차원 배열과 연산 - 자바[Java]

https://www.acmicpc.net/problem/17140 17140번: 이차원 배열과 연산 첫째 줄에 r, c, k가 주어진다. (1 ≤ r, c, k ≤ 100) 둘째 줄부터 3개의 줄에 배열 A에 들어있는 수가 주어진다. 배열 A에 들어있는 수는 100보다 작거나 같은 자연수이다. www.acmicpc.net 풀이 연산을 계속하면서 배열 arr과 행의 크기와 열의 크기가 변하고, 배열 arr의 크기는 100을 넘어갈 수 없으므로, 100x100 크기의 arr 배열과 rSize, cSize 전역 변수를 선언한다. 또한 정렬을 수행할 때, 각각의 수가 몇 번 나왔는지 파악하여 수의 등장 횟수가 커지는 순으로, 그러한 것이 여러가지면 수가 커지는 순으로 정렬해야 하기 때문에 Data라는 자료구조..

article thumbnail
[백준] 17276번 : 배열 돌리기 - 자바[Java]

https://www.acmicpc.net/problem/17276 17276번: 배열 돌리기 각 테스트 케이스에 대해 회전 연산을 마친 후 배열의 상태를 출력한다. n줄에 걸쳐 각 줄에 n개의 정수를 공백으로 구분하여 출력한다. www.acmicpc.net 풀이 1 ≤ T ≤ 10 1 ≤ n 0 ≤ |d| / 45 ≤ 8 d O(T*n^2) 코드 import java.util.*; import java.io.*; public class Main { public static void main(St..

article thumbnail
[백준] 14891번 : 톱니바퀴 - 자바[Java]

https://www.acmicpc.net/problem/14891 14891번: 톱니바퀴 총 8개의 톱니를 가지고 있는 톱니바퀴 4개가 아래 그림과 같이 일렬로 놓여져 있다. 또, 톱니는 N극 또는 S극 중 하나를 나타내고 있다. 톱니바퀴에는 번호가 매겨져 있는데, 가장 왼쪽 톱니바퀴 www.acmicpc.net 풀이 문제에 주어진대로 구현하는 문제다. 톱니바퀴의 상태가 String으로 주어지므로, 톱니바퀴의 상태를 저장하는 String[] 배열을 생성한다. N극, S극은 각각 0, 1로 저장된다. 여기서 핵심 인덱스는 2, 6번이다. 메서드 lotateClock(): 방향이 1이면 시계방향 -> 7번이 0번으로, newStr의 1~7번 인덱스 = str.substring(0, 7) lotateCoun..

article thumbnail
[백준] 17144번 : 미세먼지 안녕! - 자바[Java]

https://www.acmicpc.net/problem/17144 17144번: 미세먼지 안녕! 미세먼지를 제거하기 위해 구사과는 공기청정기를 설치하려고 한다. 공기청정기의 성능을 테스트하기 위해 구사과는 집을 크기가 R×C인 격자판으로 나타냈고, 1×1 크기의 칸으로 나눴다. 구사 www.acmicpc.net 풀이 문제에서 주어진 대로 구현하면 된다. 주의해야 할 점 먼지를 확산시킬 때 순서 없이 모든 먼지 확산이 동시에 일어나 최종적인 결과를 map에 저장해야 했다. 따라서 먼지가 확산된 결과를 저장하는 2차원 배열 int[][] map을 생성하고, 확산하기 전 먼지의 위치와 양을 저장하는 자료구조 ArrayDeque dust를 따로 생성하였다. 따라서 먼지 확산 전 map은 모두 0으로 초기화되어..

article thumbnail
[백준] 16719번 : ZOAC - 자바[Java]

https://www.acmicpc.net/problem/16719 16719번: ZOAC 2018년 12월, 처음 시작하게 된 ZOAC의 오프닝을 맡은 성우는 누구보다 화려하게 ZOAC를 알리려 한다. 앞 글자부터 하나씩 보여주는 방식은 너무 식상하다고 생각한 성우는 문자열을 보여주는 새로 www.acmicpc.net 풀이 문자열의 길이는 최대 100자이므로 n startIdx) { startIdx = data.idx; check[data.idx] = true; print(check, str); } } // update startIdx // 마지막 위치부터 앞으로 가면서 문자가 체크되어있는지 연속적으로 확인한 후, 체크하지 않은 문자가 있을 시 break int i = list.size() - 1; f..

article thumbnail
[백준] 2470번 : 두 용액 - 자바[Java]

https://www.acmicpc.net/problem/2470 2470번: 두 용액 첫째 줄에는 전체 용액의 수 N이 입력된다. N은 2 이상 100,000 이하이다. 둘째 줄에는 용액의 특성값을 나타내는 N개의 정수가 빈칸을 사이에 두고 주어진다. 이 수들은 모두 -1,000,000,000 이상 1,000,00 www.acmicpc.net 풀이 2 0) { r--; } else { flag = true; bw.write(list.get(l) + " " + list.get(r)); break; } } if (!flag) { bw.write(ans1 + " " + ans2); } bw.flush(); br.close(); bw.close(); } }