본문 바로가기

Algorithm

(172)
[BOJ-13458][시뮬레이션] 시험 감독 - Java 문제 바로가기 13458번: 시험 감독 첫째 줄에 시험장의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 각 시험장에 있는 응시자의 수 Ai (1 ≤ Ai ≤ 1,000,000)가 주어진다. 셋째 줄에는 B와 C가 주어진다. (1 ≤ B, C ≤ 1,000,000) www.acmicpc.net 기본적인 로직은 어렵지 않은 문제입니다. 다만 변수에 들어갈 수 있는 최댓값을 고려해서 자료형을 정해줘야 합니다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main{ public stat..
[BOJ-12100][시뮬레이션/스택] 2048 (Easy) - Java 문제 바로가기 12100번: 2048 (Easy) 첫째 줄에 보드의 크기 N (1 ≤ N ≤ 20)이 주어진다. 둘째 줄부터 N개의 줄에는 게임판의 초기 상태가 주어진다. 0은 빈 칸을 나타내며, 이외의 값은 모두 블록을 나타낸다. 블록에 쓰여 있는 수는 2 www.acmicpc.net 다들 많이 해봤을 법한 게임 2048을 구현하는 문제입니다. 주어진 초기 판을 최대 다섯 번 움직여서 나올 수 있는 최댓값을 구하는 문제입니다. 문제에는 '최대 다섯 번' 움직였을 때라고 나오지만 게임을 진행하는데 한번 더 움직인다고 해서 최댓값이 줄어들진 않기 때문에, 그리고 다섯 번 다 움직였을 때 최댓값이 나올 수 있으므로 무조건 5번 움직이고 나서 값을 구해주면 됩니다. import java.io.BufferedR..
[BOJ-1717][Disjoint-Set] 집합의 표현 - Java https://www.acmicpc.net/problem/1717 1717번: 집합의 표현 첫째 줄에 n(1≤n≤1,000,000), m(1≤m≤100,000)이 주어진다. m은 입력으로 주어지는 연산의 개수이다. 다음 m개의 줄에는 각각의 연산이 주어진다. 합집합은 0 a b의 형태로 입력이 주어진다. 이는 a가 �� www.acmicpc.net Disjoint-Set 을 사용하는 가장 기본적인 문제라고 생각합니다. p[] 배열을 만들고, find() 연산과 union() 연산을 이용하면 쉽게 풀 수 있습니다. import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.StringTokenizer; public cl..
[BOJ-2468][BFS] 안전 영역 - Java 문제 바로가기 2468번: 안전 영역 재난방재청에서는 많은 비가 내리는 장마철에 대비해서 다음과 같은 일을 계획하고 있다. 먼저 어떤 지역의 높이 정보를 파악한다. 그 다음에 그 지역에 많은 비가 내렸을 때 물에 잠기지 않는 � www.acmicpc.net 전형적인 BFS 문제입니다. 물에 잠기는 높이마다 체크해주면 됩니다. import java.io.*; import java.util.*; class Dir{ int y, x; Dir(int y, int x){ this.y = y; this.x = x; } } public class Main { static int N; static int[] dy = {1, -1, 0, 0}; static int[] dx = {0, 0, 1, -1}; static in..
[BOJ-17471][BFS] 게리맨더링 - Java 문제 바로가기 17471번: 게리맨더링 선거구를 [1, 4], [2, 3, 5, 6]으로 나누면 각 선거구의 인구는 9, 8이 된다. 인구 차이는 1이고, 이 값보다 더 작은 값으로 선거구를 나눌 수는 없다. www.acmicpc.net N개의 구역이 주어지고 인접한 구역들을 묶어서 두 개의 선거구를 만듭니다. 두 선거구의 인구 차이의 최솟값을 구하는 문제입니다. 부분집합을 만들고 BFS로 인접한지 탐색했습니다. import java.io.*; import java.util.*; public class Main{ static final int MIN = 9999999; static int[] population; static boolean[] isSelected; static int N; static i..
[BOJ-17135][시뮬레이션/조합] 캐슬 디펜스 - Java 문제 바로가기 17135번: 캐슬 디펜스 첫째 줄에 격자판 행의 수 N, 열의 수 M, 궁수의 공격 거리 제한 D가 주어진다. 둘째 줄부터 N개의 줄에는 격자판의 상태가 주어진다. 0은 빈 칸, 1은 적이 있는 칸이다. www.acmicpc.net 삼성 SW 역량테스트 A형 기출문제입니다. 구현이 쪼오오금 까다로운 시뮬레이션 문제입니다. 궁수가 쏴죽이는 적들의 최대를 구하면 됩니다. import java.io.*; import java.util.*; class Dir{ int y, x; Dir(int y, int x){ this.y = y; this.x = x; } } public class Main { static int N, M, D; static int[][] map; static int ans =..
[BOJ-1931][Greedy] 회의실배정 - Java 문제 바로가기 1931번: 회의실배정 (1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다. www.acmicpc.net 회의실을 사용할 수 있는 회의의 최대 개수를 구하면 됩니다. Greedy Algorithm의 대표적인 문제입니다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; import java.util.StringTokenizer; class Meeting implements Comparable{ int start, end; public Meeting(int start, int end) { super(); this..
[BOJ-13460][BFS/시뮬레이션] 구슬탈출 2 - Java 문제 바로가기 13460번: 구슬 탈출 2 첫 번째 줄에는 보드의 세로, 가로 크기를 의미하는 두 정수 N, M (3 ≤ N, M ≤ 10)이 주어진다. 다음 N개의 줄에 보드의 모양을 나타내는 길이 M의 문자열이 주어진다. 이 문자열은 '.', '#', 'O', 'R', 'B' www.acmicpc.net 드뎌 풀어씀다... 4개월전에 이래 풀고 저래 풀고 해도 안됐는데... 드뎌 풀고야 말아씀다... 빨간 공 파란 공 두개를 계속 체크해줘야 되고 이것저것 고려해야할 게 증말 많습니다... 4차원 배열로 풀면 간단하다는데 제 머리론 이해가 안됩니다 ^^;; import java.util.*; class Dir{ int y, x, day; Dir(int y, int x, int day){ this.y =..