Algorithm(73)
-
BOJ G5 20055 컨베이어 벨트 위의 로봇 JAVA
20055번: 컨베이어 벨트 위의 로봇 길이가 N인 컨베이어 벨트가 있고, 길이가 2N인 벨트가 이 컨베이어 벨트를 위아래로 감싸며 돌고 있다. 벨트는 길이 1 간격으로 2N개의 칸으로 나뉘어져 있으며, 각 칸에는 아래 그림과 같이 1부 www.acmicpc.net 문제를 한 번 읽고 자료구조를 뭘 쓰면 좋을 지 고민했다. 컨베이어 벨트는 고정된 2N 길이이기 때문에 배열에 담고, 벨트가 회전하는 것은 직접적으로 계속 배열의 값을 돌리는 게 아니라 컨베이어 벨트의 시작 인덱스와 끝 인덱스를 담아놓고 조작하는 방식이 더 효율적일 것이라 생각했다. 그리고 로봇의 경우에는 제한 없이, 종료 조건을 만족하기 전까지는 무한정으로 추가가 가능하기 때문에 Queue를 쓸까 하다가, 회전(이동)하는 동작(수정), 추가..
2023.07.15 -
BOJ G5 21610 마법사 상어와 비바라기 JAVA
21610번: 마법사 상어와 비바라기 마법사 상어는 파이어볼, 토네이도, 파이어스톰, 물복사버그 마법을 할 수 있다. 오늘 새로 배운 마법은 비바라기이다. 비바라기를 시전하면 하늘에 비구름을 만들 수 있다. 오늘은 비바라기 www.acmicpc.net 문제 읽기 r, c가 1부터 시작한다는 점, d도 1~8 까지라는 점, 등만 유의하면 설명대로 구현하면 되는 문제이다. 실수한 부분 인덱스 1부터 인덱스 1부터 시작하는 게 많아서 입력 받은 후에 -1을 한 후 대입해서 시작했다. 그러다보니 s에도 -1을 해버려서.. 잠깐 틀렸는데 다시 보고 내니 맞았당! 코드 package ps.ㄱSolving; import java.io.BufferedReader; import java.io.IOException; im..
2023.07.15 -
BOJ G4 4179 불! JAVA
4179번: 불! 입력의 첫째 줄에는 공백으로 구분된 두 정수 R과 C가 주어진다. 단, 1 ≤ R, C ≤ 1000 이다. R은 미로 행의 개수, C는 열의 개수이다. 다음 입력으로 R줄동안 각각의 미로 행이 주어진다. 각각의 문자 www.acmicpc.net 문제 읽기 문제를 처음 읽었을 땐 별 문제 없이 구현할 수 있을 줄 알았지만.. 자잘한 실수와 문제를 제대로 읽지 않은 게 원인이 되어 조금 헤맸다. 문제 해결 자료구조 char[][] map Queue 두 개 지훈이 이동 Q 불 이동 Q 실수한 부분 불 퍼지는 방식 이상하게 함 처음에는 이상하게 생각해서 지훈이 큐랑 불 큐랑 두 개 만들고 지훈이 큐에서 하나씩 뺄 때마다 불 큐에서도 하나 빼서 상하좌우 이동함. 결국 depth 다 꼬여서 답 안..
2023.07.13 -
BOJ G3 16235 나무재테크 JAVA
16235번: 나무 재테크 부동산 투자로 억대의 돈을 번 상도는 최근 N×N 크기의 땅을 구매했다. 상도는 손쉬운 땅 관리를 위해 땅을 1×1 크기의 칸으로 나누어 놓았다. 각각의 칸은 (r, c)로 나타내며, r은 가장 위에서부터 www.acmicpc.net 문제 읽기 실수 없이 구현하면 되는 시뮬레이션 문제이다. 문제를 읽으면서 실수할 수 있는 부분을 체크하면서 읽었다. r, c는 1부터 시작 초기 양분은 5부터 그 다음 자료구조를 정했다. 나무 : 나이만 필요하므로 그냥 int형 Cell : 양분의 양(int), 살아있는 나무(list), 죽은 나무(list) 나무는 그냥 int형으로 정했고 각각의 cell은 class로 정의했다. 코드 package ps.ㄱSolving; import java.i..
2023.07.04 -
BOJ G4 15685 드래곤커브 JAVA
15685번: 드래곤 커브 첫째 줄에 드래곤 커브의 개수 N(1 ≤ N ≤ 20)이 주어진다. 둘째 줄부터 N개의 줄에는 드래곤 커브의 정보가 주어진다. 드래곤 커브의 정보는 네 정수 x, y, d, g로 이루어져 있다. x와 y는 드래곤 커 www.acmicpc.net 문제를 읽어보니 상하좌우 인덱스 변화로 풀 수 있을 것 같았다. 단계별로 친절하게 그림을 그려줘서 찾기 쉬웠다!! 코드 package ps.Simulation; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.Collections; impor..
2023.07.02 -
BOJ S3 2579 계단오르기 JAVA
이 문제는 실버이긴 하지만 DP의 개념을 완전히 다지고 싶기 때문에 적어보기로 했다. 2579번: 계단 오르기 2579번: 계단 오르기 계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. 과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점 www.acmicpc.net 문제읽기 이 문제는 dp문제 중 냅색 문제!!와 유사하다고 생각했다. 기존 냅색 문제의 경우, 개수 N, 부피 V의 두 개의 변수가 존재하고, 따라서 이차원 dp 배열을 사용한다. 그 다음 반복문을 이용하여 개수를 늘려가고, 해당 개수 안에서 부피를 늘려가며 최대 가치를 점화식을 이용해서 저장하게 된다. 현재 문제는 냅색 문제에서 좀 더 단순화(?) 된 버전인 것 ..
2023.07.02