본문 바로가기

알고리즘 문제147

[알고리즘 문제] 백준1371 - 가장 많은 글자 문제는 엄청 간단하다. 문장에서 가장 많이 사용되는 글자를 출력하는 문제이다. 나는 입력받을 받을 때, Scanner 클래스의 hasNextLine()을 사용했는데, 로컬에서 테스트를 하면 EOF를 잡아주지 못해서 그냥 뇌버깅(?)으로 풀었지만, 백준에서는 EOF를 잡아주어서 다행히 맞출 수 있었다. 오랜만에 EOF가 나와서 개념을 다시 잡고 가야겠다. In computing, end-of-file (commonly abbreviated EOF[1]) is a condition in a computer operating system where no more data can be read from a data source 문제 해결방법은, 1. 한 줄을 입력받는다 ex) baekjoon online jud.. 2019. 8. 23.
[알고리즘 문제] 백준9933 - 민균이의 비밀번호 문제 자체는 생각보다 그렇게 어렵지 않다. 텍스트 파일에는 여러 단어가 들어가 있는데, 이 들중에 좌우반전이 되는 한쌍의 단어가 있으면 그 값이 비밀번호가 되고 단어의 길이와 단어의 가운데 값을 출력하면 되는 문제이다. 이 문제를 듣고 map을 쓰면 되겠다는 생각이 들었다. 문제 해결 방법은, 1. 먼저 단어를 좌우반전("asdfg" -> "gfdsa"가 map에 존재하는지 검사한다) 2. 있으면 답을 출력하고, 없으면 좌우 반전한 값을 map에 넣는다. import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int N = sc.nextInt(); M.. 2019. 8. 23.
[알고리즘 문제] 백준11559 - Puyo Puyo 문제 자체는 이해하기 쉽다. 뿌요뿌요 게임을 한번 해봤더라면, 바로 이해할 수가 있다. 같은 색깔의 블럭이 상하좌우로 4개 이상 연결되어 있으면 연결되어 있는 모든 같은 색깔의 한꺼번에 없어진다. 그 후, 없어진 공간만큼 위의 블럭들이 아래로 내려오게 된다. 문제는 현재 상황에서 몇번의 연쇄작용(4개이상 상하좌우로 연결된 같은 블럭이 한꺼번에 없어지는 것)이 일어나는지 출력하는 문제이다. 만약 하나도 터지지 않으면 0을 출력한다. 사실 문제는 그렇게 어렵지 않다, 하지만 이걸 코드로 어떻게 옮기느냐가 중요한데 나는 dfs를 활용하여 풀었다. 전체적인 흐름은 다음과 같다. 1. 그룹이 하나도 없을 때까지 while문을 수행한다. 2. 현재 상황에서 같은 색깔의 그룹을 모두 '?'로 표시한다(dfs) 3. .. 2019. 8. 21.
[알고리즘 문제] 백준1911 - 흙길 보수하기 문제 자체는 이해하기 어렵지 않다. N개의 물 웅덩이와 길이가L인 널빤지가 있을 때, N개의 물 웅덩이를 덮을 수 있는 널빤지의 최소 개수를 구하는 문제이다. 한마디로 모든 물웅덩이를 덮는데 필요한 최소 널빤지 개수를 구하는 문제이다. 그리디 알고리즘으로 분류되어 있었기 때문에, 뭔가 아주 간단한 규칙이 있을 거라 생각했다. 처음에는 그 규칙을 찾으려고 했었는데, 생각해보니 그냥 처음부터 덮는 방법으로 하면 되는 문제였다. 문제 해결 방법은, 1. 웅덩이들을 시작점을 기준으로 정렬한다. 2. 현재 구간(웅덩이 시작-끝)동안 필요한 널빤지 개수를 구한다. 3. 시작점+널빤지의 길이가 만약 다음 웅덩이의 시작점보다 작으면 1의 과정을 반복하지만, 크거나 같다면 현재 시작점+널빤지의 길이를 시작점으로 다시 1.. 2019. 8. 20.