Java(160)
-
[Baekjoon] 3190번: 뱀 - Java
https://www.acmicpc.net/problem/3190 3190번: 뱀 'Dummy' 라는 도스게임이 있다. 이 게임에는 뱀이 나와서 기어다니는데, 사과를 먹으면 뱀 길이가 늘어난다. 뱀이 이리저리 기어다니다가 벽 또는 자기자신의 몸과 부딪히면 게임이 끝난다. 게임 www.acmicpc.net 문제 설명 문제 이해 자체는 어렵지 않으나 구현 및 시뮬레이션 문제라 시간이 걸린다. 그리고 방향 전환 알고리즘에 대한 감이 없다면 처음에는 조금 시간이 걸릴 수 있다. 또한 뱀의 길이 및 방향 전환 관리를 위해 덱, 큐 자료구조를 사용했다. 풀이 방법 구현 문제라 딱히 설명할 것은 없다. 전체 코드는 다음과 같다. package baekjoon.queue; import java.io.BufferedRe..
2023.02.10 -
[Baekjoon] 2493번: 탑 - Java
https://www.acmicpc.net/problem/2493 2493번: 탑 첫째 줄에 탑의 수를 나타내는 정수 N이 주어진다. N은 1 이상 500,000 이하이다. 둘째 줄에는 N개의 탑들의 높이가 직선상에 놓인 순서대로 하나의 빈칸을 사이에 두고 주어진다. 탑들의 높이는 1 www.acmicpc.net 문제 설명 문제가 조금 장황한 것 같지만 핵심은 간단하다. 주어진 탑들이 마지막부터 반대 방향으로 레이저를 발사하는데 자신보다 높은 탑만 신호를 받을 수 있다. 즉, 마지막부터 자신보다 높은 가장 가까운 탑을 찾아내면 되는 것이다. 사이트 예제를 그림으로 설명하면 다음과 같다. 이는 스택을 활용하면 효율적으로 해결할 수 있다. 오등큰수와 비슷한 문제이다. 풀이 방법 핵심 로직은 다음과 같다. 중..
2023.02.09 -
[Baekjoon] 17299번: 오등큰수 - Java
https://www.acmicpc.net/problem/17299 17299번: 오등큰수 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째에 수열 A의 원소 A1, A2, ..., AN (1 ≤ Ai ≤ 1,000,000)이 주어진다. www.acmicpc.net 문제 설명 오른쪽에 있는 숫자 중 자신보다 수열에서 많이 등장한 가장 가까운 수를 찾으면 된다. 문제 자체는 이해하면 어렵지 않지만 구현에서 고생했다. 풀이 방법 1. 이중 반복문(시간 초과) 처음에는 반복문을 통해 순회하면서 해결하려고 했다. 하지만 시간 초과가 발생했다. for (int i = 0; i < N; i++) { int curElem = elems[i]; boolean isAppearence =..
2023.02.08 -
[Baekjoon] 11723번: 집합 - Java
https://www.acmicpc.net/problem/11723 11723번: 집합 첫째 줄에 수행해야 하는 연산의 수 M (1 ≤ M ≤ 3,000,000)이 주어진다. 둘째 줄부터 M개의 줄에 수행해야 하는 연산이 한 줄에 하나씩 주어진다. www.acmicpc.net 문제 설명 집합 개념에 대한 간단한 문제이다. 다만 주의할 것은 시간과 메모리 제한이 있으므로 배열 또는 비트 연산자로 문제를 해결해야 한다. 풀이 방법 1. 배열 먼저 배열로 푸는 방법이 있다. 배열에 담기는 숫자가 20까지로 제한되어 있으므로 짧은 배열로 해결이 가능하다. 배열의 타입으로는 boolean과 int 타입을 둘 다 사용할 수 있지만 크기가 작은 boolean을 사용하면 된다. 코드 package baekjoon.im..
2022.05.18 -
[Baekjoon] 1946번: 신입 사원 - Java
https://www.acmicpc.net/problem/1946 1946번: 신입 사원 첫째 줄에는 테스트 케이스의 개수 T(1 ≤ T ≤ 20)가 주어진다. 각 테스트 케이스의 첫째 줄에 지원자의 숫자 N(1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개 줄에는 각각의 지원자의 서류심사 성 www.acmicpc.net 문제 설명 지원자들을 가장 많이 뽑을 수 있는 선에서 서류심사 성적과 면접시험 성적 중 적어도 하나가 다른 지원자보다 낮지 않은 사람들만 필터링해야 한다. 이게 무슨 말인지 필자도 처음 문제를 읽었을 때 이해하지 못했다. 예제 입력을 활용하여 설명하면 다음과 같다. 테스트 케이스 1 서류 심사 등수 면접 심사 등수 A 3 2 B 1 4 C 4 1 D 2 3 E 5 5 A가 합..
2022.05.14 -
[Baekjoon] 1439번: 뒤집기 - Java
https://www.acmicpc.net/problem/1439 1439번: 뒤집기 다솜이는 0과 1로만 이루어진 문자열 S를 가지고 있다. 다솜이는 이 문자열 S에 있는 모든 숫자를 전부 같게 만들려고 한다. 다솜이가 할 수 있는 행동은 S에서 연속된 하나 이상의 숫자를 잡고 모 www.acmicpc.net 문제 설명 문제는 복잡하지 않다. 0 또는 1로 이루어진 문자열이 주어진다. 그리고 연속된 하나 이상의 숫자를 뒤집을 수 있으며 모두 같은 숫자를 만들어야 한다. 이때 뒤집는 최소 횟수를 출력하면 된다. 풀이 방법 잠깐 생각해보면 금방 풀이를 떠올릴 수 있을 것이다. 연속된 숫자를 뒤집어야 하기 때문에 연속된 숫자가 적은 숫자를 뒤집으면 된다. 예를 들어 보자. 10110001이 주어졌다. 연속된..
2022.05.09