BOJ

· Java/BOJ
문제https://www.acmicpc.net/problem/11559 풀이bfs가 포함된 빡 구현 문제이다. 제거할 뿌요를 bfs로 찾고, 삭제하고, 중력을 통해 재 정렬을 해야한다. 여러 그룹의 삭제될 뿌요가 한 텀에 있어도 연쇄는 한 번이라는 것을 잊으면 안된다. 여기서 연속된 4개 이상이 연결된 뿌요를 찾아 제거해야하는데, 그냥 BFS를 사용해 탐색하면, ㅓ ㅏ ㅗ ㅜ 모양의 탐색은 visited에 걸려 탐색을 할 수가 없다. 이것은 단순하게 해결 가능한데, 최대 2번까지 방문을 허용하기만 하면 ㅓ ㅏ ㅗ ㅜ 탐색이 가능하게 된다. 중력에 의한 재정렬은 stack을 이용해 구현했다. 제거할 뿌요를 제외한 값을 stack에 push하고, 다시 map[][]의 아래부터 stack에서 pop을 하며 값..
· Java/BOJ
문제https://www.acmicpc.net/problem/17266풀이세 가지 구역을 체크했습니다. 길 시작점부터 첫 가로등까지의 구역, 가로등과 가로등 사이의 구역, 그리고 마지막 가로등과 도착점의 구역입니다.  세 가지 구역의 특징은 가로등과 가로등 사이면, 사이의 구간을 두 개의 가로등이 절반씩 나눠서 커버할 수 있다는 것이고 시작 구역과 도착 구역은 가로등 하나가 온전히 구간을 커버해야합니다.   그래서 아래처럼 세 구간으로 나누어 커버 범위의 최대 값을 구해주었습니다. 주의해야할 것은 만약 가로등과 가로등 사이 구간의 길이가 홀수라면, 사이의 길이/2 +1을 해주어야 한다는 것입니다. 홀수를 2로 나누기만 하면 중간을 커버하지 못하게 됩니다. (3이면 3/2 -> 1, 그러나 3을 1 두개로..
· Java/BOJ
문제https://www.acmicpc.net/problem/17135  풀이전형적인 삼성 코테의 빡 구현 문제입니다.  구현만 충실히 수행하면 되었는데, 삼성 SW 역량 문제의 구현 파트를 풀 때마다 느끼는 것은, 구현 시 중복된 데이터가 처리되는 것을 꼼꼼하게 잘 피해야하는 것 같습니다.   위 문제에서도 적의 수를 세는 부분이나, 적이 이동할 때 등등 for문을 돌며 배열에서만 구현을 처리하려하면 중복되는 데이터로 인해 원하는 결과가 나오지 않습니다. 그래서 저는 list 자료 구조를 따로 선언해 데이터를 저장하고, 후 처리를 해주는 식으로 풀이를 진행했습니다.   자세한 풀이 과정은 주석으로 대체했습니다. 아래는 소스 코드입니다.소스 코드import java.util.*;public class B..
· Java/BOJ
문제https://www.acmicpc.net/problem/10164   풀이고등학교? 때 배웠던 격자 상의 경로를 찾는 아이디어를 통해 문제를 해결했습니다. 격자 상의 출발지와 목적지를 정해 행렬을 만드는 방식으로 구현을 했습니다.  행렬을 만드는 메서드에는 시작점과 도착점, 그리고 특정 경로를 거치면  재귀를 통해 그 포인트부터 행렬을 생성할 수 있게끔 check 변수를 매개변수로 넣어주었습니다.  아래는 소스 코드입니다. 소스 코드import java.util.Scanner;public class B10164_격자상의경로 { static int N,M; static int[][] dp; public static void main(String[] args) { Scann..
· Java/BOJ
문제https://www.acmicpc.net/problem/14890 풀이빡 구현 문제입니다. 아이디어는 시간이 있다면 쉽게 떠올려지는데, 조건을 꼼꼼하게 점검해야하는 문제였습니다. 우선 경사면을 두 가지로 나누어 볼 수 있습니다. 앞의 계단이 높아서 올라가야하는 경사면과 낮아서 내려가야하는 경사면입니다. 올라가야하는 경사면에서는 현재의 위치에서 뒤로 L만큼 체크하며 경사면을 놓을 수 있는지 체크를 해야하고, 내려가야하는 경사면에서는 현재의 위치 다음부터 L만큼 앞으로 체크하며 경사면을 놓을 수 있는지 체크합니다.   그리고 경사면이 있는 위치에서는 경사면을 놓으면 안됩니다. 경사면이 있는 위치에서 경사면을 놓는 경우는 내려갔다가 올라가는 경우입니다. 이때 경사면을 slope 배열에 저장해 체크했습니다..
· Java/BOJ
문제https://www.acmicpc.net/problem/2828   풀이 포인터를 이용해 문제를 해결했습니다.   바구니의 시작 점을 start, 그리고 끝 점은 end = start+M-1 로 표현할 수 있습니다. 그리고 들어오는 입력 값이 start와 end 사이에 있다면 이동하지 않아도 되고, 만약 범위 밖이라면 start와 end를 통채로 ++, --를 통해 옮겨주었습니다.  그리고 이동할 때마다 moveDist라는 변수를 ++ 해주며 답을 구했습니다.  아래는 소스 코드입니다.소스 코드import java.util.Scanner;public class B2828_사과담기게임 { public static void main(String[] args) { Scanner sc =..
동구름이
'BOJ' 태그의 글 목록