본문 바로가기
반응형

분류 전체보기313

백준 20056 : 마법사 상어와 파이어볼 https://www.acmicpc.net/problem/20056 20056번: 마법사 상어와 파이어볼 첫째 줄에 N, M, K가 주어진다. 둘째 줄부터 M개의 줄에 파이어볼의 정보가 한 줄에 하나씩 주어진다. 파이어볼의 정보는 다섯 정수 ri, ci, mi, si, di로 이루어져 있다. 서로 다른 두 파이어볼의 위치 www.acmicpc.net [ 문제풀이 ] 주어진 지문을 토대로 총 3단계 과정으로 세분화할 수 있다. 좌표에 여러 개의 파이어볼이 존재할 수 있기 때문에 삭제, 삽입이 빠른 LinkedList를 이용하여 Map을 구현하였다. ​1. 모든 파이어볼이 자신의 방향 d로 속력 s 칸만큼 이동시킨다. 이동할 좌표를 구할 때 모듈러 연산을 활용하면 빠르게 구할 수 있다. 양수일 경우 단순히 .. 2021. 8. 6.
백준 20057 : 마법사 상어와 토네이도 https://www.acmicpc.net/problem/20057 20057번: 마법사 상어와 토네이도 마법사 상어가 토네이도를 배웠고, 오늘은 토네이도를 크기가 N×N인 격자로 나누어진 모래밭에서 연습하려고 한다. 위치 (r, c)는 격자의 r행 c열을 의미하고, A[r][c]는 (r, c)에 있는 모래의 양을 www.acmicpc.net [ 문제풀이 ] 이번 문제는 세분화할 필요가 없을 정도로 정말 단순하게 구현만 하면 되는 문제이다. 주어진 조건에 따라 토네이도가 사라질 때까지 이동시키며 모래를 이동시키면 된다. ​이번 문제를 좀 쉽게 구현하기 위해 내가 사용한 팁? 을 드리겠다. ​1. 격자 밖으로 이동하는 모래를 저장하기 위해 초기 배열을 N이 아닌, 상하좌우 +2한 N+4로 잡은 후 구현하면.. 2021. 8. 6.
백준 20058 : 마법사 상어와 파이어스톰 https://www.acmicpc.net/problem/20058 20058번: 마법사 상어와 파이어스톰 마법사 상어는 파이어볼과 토네이도를 조합해 파이어스톰을 시전할 수 있다. 오늘은 파이어스톰을 크기가 2N × 2N인 격자로 나누어진 얼음판에서 연습하려고 한다. 위치 (r, c)는 격자의 r행 c www.acmicpc.net [ 문제풀이 ] 2차원 배열을 회전하는 법을 알고 있다면 시리즈 3개의 문제 중 가장 쉽게 풀 수 있지 않을까 싶다. ​1. A(i, j)의 값을 시계방향으로 90도 회전하려면 A(j, N-i-1)로 하면 된다. 이 문제는 배열 전체를 회전하는 것이 아닌 나눠진 격자의 배열을 각각 따로 회전시키는 것이기 때문에 이 부분만 조심해서 구현하면 된다. 이 문제에서 가장 어렵다고 생각.. 2021. 8. 6.
백준 20055 : 컨베이어 벨트 위의 로봇 https://www.acmicpc.net/problem/20055 20055번: 컨베이어 벨트 위의 로봇 길이가 N인 컨베이어 벨트가 있고, 길이가 2N인 벨트가 이 컨베이어 벨트를 위아래로 감싸며 돌고 있다. 벨트는 길이 1 간격으로 2N개의 칸으로 나뉘어져 있으며, 각 칸에는 아래 그림과 같이 1부 www.acmicpc.net [ 문제풀이 ] 단순 시뮬레이션 문제이다. 주어진 조건을 순서대로 구현한다면 쉽게 정답을 맞힐 수 있을 것이다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { s.. 2021. 8. 6.
백준 19236 : 청소년 상어 https://www.acmicpc.net/problem/19236 19236번: 청소년 상어 첫째 줄부터 4개의 줄에 각 칸의 들어있는 물고기의 정보가 1번 행부터 순서대로 주어진다. 물고기의 정보는 두 정수 ai, bi로 이루어져 있고, ai는 물고기의 번호, bi는 방향을 의미한다. 방향 bi는 www.acmicpc.net [ 문제풀이 ] 상어 시리즈 2번째 문제 청소년 상어이다. 차근차근 하나씩 구현해간다면 어렵지 않게 풀 수 있을 것이다. 푸는 방법이 다양하게 존재하겠지만 나는 상어를 기준으로 물고기를 관리하는 식으로 구현하였다. ​1. 상어를 기준으로 잡고 상어 밑에서 물고기를 관리하는 맵을 만든다. 물고기를 관리하는 맵은 총 2가지로 구현하였다. 첫 번째는 1차원 배열의 fish이다. 1~1.. 2021. 8. 6.
백준 16236 : 아기 상어 https://www.acmicpc.net/problem/16236 16236번: 아기 상어 N×N 크기의 공간에 물고기 M마리와 아기 상어 1마리가 있다. 공간은 1×1 크기의 정사각형 칸으로 나누어져 있다. 한 칸에는 물고기가 최대 1마리 존재한다. 아기 상어와 물고기는 모두 크기를 가 www.acmicpc.net [ 문제풀이 ] 상어 시리즈 첫 번째 문제 아기 상어이다. 주어진 조건대로 구현하면 된다. 경우의 수가 여러 개인 시뮬레이션이 아닌 하나의 상어를 계속 움직이는 것이기 때문에 구현에 크게 어려움이 없을 것이다. import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.. 2021. 8. 6.
백준 1013 : Contact https://www.acmicpc.net/problem/1013 1013번: Contact 입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트 케이스에 대해 전파를 표현하는, { 0, 1 }만으로 이루어진 문자열이 공백 없이 주어진다. 문자열 길이는 (1 ≤ www.acmicpc.net [ 문제풀이 ] 정규 표현식을 사용할 줄 알면 공짜인 문제이다. Java에서는 Pattern과 Matcher 클래스를 통해 정규 표현식을 사용할 수 있다. 주어진 패턴 (100+1+ | 01)+으로 Pattern을 만든 후 Matcher를 통해 입력받은 문자열을 분석해주면 된다. Pattern의 형태는 다음과 같다. String regex = "^(100+1+|01)+$"; 간단하게 설.. 2021. 8. 5.
백준 10159 : 저울 https://www.acmicpc.net/problem/10159 10159번: 저울 첫 줄에는 물건의 개수 N 이 주어지고, 둘째 줄에는 미리 측정된 물건 쌍의 개수 M이 주어진다. 단, 5 ≤ N ≤ 100 이고, 0 ≤ M ≤ 2,000이다. 다음 M개의 줄에 미리 측정된 비교 결과가 한 줄에 하나씩 www.acmicpc.net [ 문제풀이 ] 문제를 해석해보면 결국 내가 비교할 수 없는 물건의 개수는 N - 1(나) - (내가 방문할 수 있는 정점 + 나에게 방문하는 정점)이다.따라서 dfs를 통해 모든 정점을 탐색하면서 확인해주면 쉽게 해결할 수 있다. import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.In.. 2021. 8. 4.
백준 20061 : 모노미노도미노 2 https://www.acmicpc.net/problem/20061 20061번: 모노미노도미노 2 모노미노도미노는 아래와 같이 생긴 보드에서 진행되는 게임이다. 보드는 빨간색 보드, 파란색 보드, 초록색 보드가 그림과 같이 붙어있는 형태이다. 게임에서 사용하는 좌표 (x, y)에서 x는 행, www.acmicpc.net [ 문제풀이 ] 단순 노가다 빡구현 문제이다. 주어진 조건에 맞게 블록들을 시뮬레이션 시켜주면 된다. 빡구현 문제는 설계를 잘해도 실수 한 번만하면 디버깅하는데 정말 힘든 것 같다. move 배열을 이용하여 블록들을 이동시켰는데 연한 영역 부분을 빠뜨리는 바람에 굉장히 힘들었다. import java.io.BufferedReader; import java.io.BufferedWriter.. 2021. 8. 3.
반응형