알고리즘 문제풀이/SWEA [중복순열, BFS] SWEA 5656번 구슬 깨기 자바 풀이 (모의 sw 역량 테스트) - sw expert academy 5656 구슬 깨기 자바(java) 풀이 모의 SW 역량 테스트 sw expert academy 5656 구슬 깨기 문제정리 구슬을 쏘아 벽돌을 깨드리려 한다. 벽돌이 있는 공간의 크기는 WxH이다. 구슬은 좌우로만 움직일 수 있어서 항상 맨 위에 있는 벽돌만 깨트릴 수 있다. 벽돌은 숫자 1~9로 표현되며, 구슬이 명중한 벽돌은 상하좌우로(벽돌에 적힌 숫자-1)칸 만큼 같이 제거된다. 빈 공간이 있을 경우 벽돌은 밑으로 떨어지게 된다. N개의 벽돌을 떨어트려 최대한 많은 벽돌을 제거하려고 한다. 벽돌을 떨어트린 후 남은 벽돌의 개수를 구하여라. 문제 풀이 모든 경우를 따져주기 위해서 중복 순열을 구해야 합니다. N이 3인 경우 000 ~ 999 (W=10)까지 모두 시뮬레이션 해봐야 하기 때문입니다. 매번 시뮬레이션 하기 위해 원래 블록 상태를 유지해야 합니다. 그래서 배열을 복사하여 사용합니다. 선택한 열에 맨 위의 블록을 찾아 큐에 넣습니다. 그리고 bfs 방식으로 계속 연쇄적으로 뿌셔 나갑니다. 상하좌우로 1칸씩 늘려가며 써있는 수-1 만큼 탐색해 나갑니다. 벽돌을 모두다 부셨다면 비어있는 공간을 제거하기 위해 아래에서 위로 0이 아닌 수를 탐색하여 queue에 넣습니다. queue에 넣은 수를 그 열의 아래부터 쌓습니다. 그리고 중복순열로 선택한 N개의 열들에 대해 반복합니다. 제일 적은 수의 블록을 남기기 위해서는 제일 많이 깨트려야 합니다. 그래서 깨트린 블록 수를 최대가 되도록 update 해 나갑니다. 총 블록 수에서 제일 크게 뿌신 경우의 max 값을 빼서 답을 구합니다. swea 5656번 구슬 깨기 자바 코드 공유하기 게시글 관리 Code by horang '알고리즘 문제풀이 > SWEA' 카테고리의 다른 글 [dfs, 백트래킹] sw expert academy 2112번 보호 필름 자바 풀이 (0) 2020.05.22 [완전 탐색, 맨해튼 거리] swea 2117번 모의 sw 역량 테스트 :: 홈 방범 서비스 자바 풀이 (0) 2020.05.06 [SWEA] SW expert academy 1263번 사람 네트워크2 자바 풀이 ( 다익스트라, 플로이드-워셜 알고리즘) (0) 2020.03.22 [SWEA] SW expert academy 1260번 화학물질2 자바(java) 풀이 (최소 곱셈 수 찾기, dp) (0) 2020.03.21 [SWEA] SW expert academy 3282번 0/1 Knapsack 자바(java) 풀이 (DP, 점화식) (0) 2020.03.21 Contents 당신이 좋아할만한 콘텐츠 [dfs, 백트래킹] sw expert academy 2112번 보호 필름 자바 풀이 2020.05.22 [완전 탐색, 맨해튼 거리] swea 2117번 모의 sw 역량 테스트 :: 홈 방범 서비스 자바 풀이 2020.05.06 [SWEA] SW expert academy 1263번 사람 네트워크2 자바 풀이 ( 다익스트라, 플로이드-워셜 알고리즘) 2020.03.22 [SWEA] SW expert academy 1260번 화학물질2 자바(java) 풀이 (최소 곱셈 수 찾기, dp) 2020.03.21 댓글 0 + 이전 댓글 더보기