PS/백준

    백준 / 그리디 / 1744번 / 수 묶기 / Java

    1744번: 수 묶기 길이가 N인 수열이 주어졌을 때, 그 수열의 합을 구하려고 한다. 하지만, 그냥 그 수열의 합을 모두 더해서 구하는 것이 아니라, 수열의 두 수를 묶으려고 한다. 어떤 수를 묶으려고 할 때, 위치에 www.acmicpc.net package BOJ.Greedy; import java.io.*; import java.util.*; public class _1744 { private static BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); private static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(Sy..

    백준 / 그래프 / 17471번 / 게리맨더링 / Java

    17471번: 게리맨더링 선거구를 [1, 4], [2, 3, 5, 6]으로 나누면 각 선거구의 인구는 9, 8이 된다. 인구 차이는 1이고, 이 값보다 더 작은 값으로 선거구를 나눌 수는 없다. www.acmicpc.net package boj.p17471; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.util.ArrayDeque; import java.util.Deque; import java.util.LinkedList; import java.util.StringToken..

    백준 / 그래프 / 20058번 / 마법사 상어와 파이어스톰 / Java

    20058번: 마법사 상어와 파이어스톰 마법사 상어는 파이어볼과 토네이도를 조합해 파이어스톰을 시전할 수 있다. 오늘은 파이어스톰을 크기가 2N × 2N인 격자로 나누어진 얼음판에서 연습하려고 한다. 위치 (r, c)는 격자의 r행 c www.acmicpc.net 다른 기능들은 그대로 구현하면 되어서 할만했지만, 오른쪽 90도 돌리는 기능에서 인덱스 접근때문에 계속 헤맸다. 손으로 그리면서 각 인덱스가 90도를 회전했을 때, 어떻게 바뀌는지 확인했더니 공식을 구할 수 있었다. package boj.p20058; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.InputStreamReader; i..

    백준 / 백트래킹 / 15683번 / 감시 / Java

    15683번: 감시 스타트링크의 사무실은 1×1크기의 정사각형으로 나누어져 있는 N×M 크기의 직사각형으로 나타낼 수 있다. 사무실에는 총 K개의 CCTV가 설치되어져 있는데, CCTV는 5가지 종류가 있다. 각 CCTV가 감 www.acmicpc.net package ps; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.StringTokenizer; public class Main { // CCTV의 좌표와 번호가 담긴 클래스의 리스트 private static ArrayList cc..

    백준 / 그래프 / 2178번 / 미로 탐색 / JS

    2178번: 미로 탐색 첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력으로 주어진다. www.acmicpc.net /* 미로 탐색 */ const fs = require('fs'); const filePath = process.platform === 'linux' ? '/dev/stdin' : '../input.txt'; // const filePath = process.platform === 'linux' ? '/dev/stdin' : 'BOJ/input.txt'; const input = fs.readFileSync(filePath).toString().trim().split('\..

    백준 / 그래프 / 7569번 / 토마토 / JS

    7569번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N과 쌓아올려지는 상자의 수를 나타내는 H가 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M ≤ 100, 2 ≤ N ≤ 100, www.acmicpc.net 큐를 직접 구현하지 않고 BFS를 했을 때 shift() 메소드를 사용하면 시간초과가 나서 어쩔 수 없이 구현해야 했다. 흔히 하던 전형적인 BFS 방식에서 차원수가 하나 더 늘어난 것 빼고는 크게 다를것은 없는 문제였다. /* 토마토 */ const fs = require('fs'); const filePath = process.platform === 'linux' ? '/dev/stdin' : '../input.t..