구현

📖 문제 https://www.acmicpc.net/problem/10709   💡  풀이 방식• 구현1. 2차원 배열에 구역 값을 입력받는다.2. 각 행을 돌며 각 (i,j)가 몇 분 뒤 처음으로 하늘에 구름이 오는지를 확인한다.  - 현재 i번째 행의 j번째 열에 구름이 있는 경우> dist[i][j] = 0, 현재 열 j를 변수로 저장한다.  - 현재 i번째 행의 j번째 열에 구름이 없는 경우> 앞 열에서 구름이 있었다면, (현재 열 - 가장 가까운 구름 열)의 값을 dist[i][j]에 저장한다.  🔺 코드1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556im..
📖 문제 https://www.acmicpc.net/problem/12100   💡  풀이 방식• 백트래킹 + 시뮬레이션 백트래킹으로 상하좌우 4방향에 대해 5회까지 다 이동시켜보고, 배열 내 가장 큰 수를 구한다.  🔸 void DFS(명령 횟수)[종료 조건] 명령 횟수가 5번인 경우, 배열 내 최댓값을 탐색하고, 이를 최댓값과 비교해 최댓값 갱신if(cnt == 5) { findMax(); return;} 그게 아닌 경우, 과정 1,2를 진행한다. 1) 원본 배열 map을 복사한다.int[][] copy = copyArray(map); 2) 상하좌우 4방향 중 이동 방향을 정하고, 해당 방향으로 이동시키고, 명령 횟수에 +1해 재귀호출을 진행한다. 그리고 이동시켰던 배열 값을 원상복구..
📖 문제 https://www.acmicpc.net/problem/21315   💡  풀이 방식• 브루트포스  🔺 코드1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980import java.util.*;import java.io.*; public class Main {    static int N, K, K1, K2;    static int[] input, deck;        public static void main(String[] args) throws IOException..
📖 문제 https://www.acmicpc.net/problem/17085    💡  풀이 방식• 구현 & 브루트포스- 완전탐색으로 #인 위치에 첫 번째 십자가를 놓는다.- 현재 위치의 행과 열 중 큰  값의 크기의 십자가가 격자판에 놓일 수 있는지 확인한다. (crossChk 메소드)private static boolean crossChk(int y, int x, int size) { for(int d = 0 ; d   - 놓을 수 있다면(crossChk == true), 2번째 십자가의 최대 크기를 탐색한다. (search 메소드)private static void search(int y, int x, int size) { int result = 0; for(int i = x+1..
📖 문제 https://www.acmicpc.net/problem/9944   💡  풀이 방식• 백트래킹1. 값을 입력받으면서 격자 안의 값이 장애물(*)인 경우, 방문 처리하고 방문한 칸의 갯수(cnt)를 1 증가시킨다.2. 한 칸만 빈 칸인 경우, 해당 케이스의 이동 경로 수는 0이다.if(cnt == N*M) answer = 0; // 한 칸만 빈 칸인 경우  3. 모든 칸을 탐색하며 방문한 적 없는 점에서,4방향 탐색을 통해 1) 격자 범위 내에 있고, 2) 방문하지 않은 칸을이동 처리했다가 안 했다가 하며 이동 경로 수를 구한다. (백트래킹)for(int i = 0 ; i   [백트래킹 함수]- 인자 : x좌표, y좌표, 이동 횟수(result), 방향 번호(dir), 방문 갯수(cnt)s..
📖 문제 https://www.acmicpc.net/problem/3019   💡  풀이 방식• 구현, 브루트포스 1. 블록 모양에 따라 올라와야 하는 바닥면의 높이를 저장한다.2. 바닥면에 대해 블록을 끝까지 내릴 수 있는지 반복문으로 검사한다. ⇒ 각 번호에 맞는 빈 공간 수를 뺐을 때 모두 같은 값이 나오면 놓을 수 있는 자리이다!! (참고)    🔺 코드12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152import java.util.*;import java.io.*; public class Main {    static int C,P;    static int[] map; ..
📖 문제 https://www.acmicpc.net/problem/15683  💡  풀이 방식• 시뮬레이션 + 백트래킹 + 브루트포스  각 CCTV의 타입을 받아, 각 타입에 맞춰 회전된 상태를 조합해 사각지대의 최소값을 구한다.CCTV 타입이 1( → )인 경우 : 북(0 / ↑), 남(1 / ↓), 서(2 / ←), 동(3 / →)CCTV 타입이 2( ↔ )인 경우 : 서동(23 / ↔), 북남(01 / ↕ )CCTV 타입이 3(↑→)인 경우 : 북동(03 / ↑→) , 남동(13 / ↓→) , 남서(12 / ↓←) , 북서(02 / ←↑)CCTV 타입이 4( ←↑→ )인 경우 : 북서동(023), 북남동(013), 남서동(123), 북남서 (012)CCTV 타입이 5(↕↔)인 경우 : 북남서동(..
📖 문제 20058번: 마법사 상어와 파이어스톰 마법사 상어는 파이어볼과 토네이도를 조합해 파이어스톰을 시전할 수 있다. 오늘은 파이어스톰을 크기가 2N × 2N인 격자로 나누어진 얼음판에서 연습하려고 한다. 위치 (r, c)는 격자의 r행 c www.acmicpc.net 💡 풀이 방식 • BFS + 시뮬레이션 1. 배열을 시계 방향으로 90도 회전시킨다. (그림 참고) private static void rotate(int r, int c, int v, int[][] tmp) {// tmp : 회전 후 값 저장용 배열 for(int i = 0 ; i < v; i++) { for(int j = 0 ; j < v ; j++) { tmp[r + i][c + j] = A[r + v - 1 - j][c + i]..
📖 문제 16918번: 봄버맨 첫째 줄에 R, C, N (1 ≤ R, C, N ≤ 200)이 주어진다. 둘째 줄부터 R개의 줄에 격자판의 초기 상태가 주어진다. 빈 칸은 '.'로, 폭탄은 'O'로 주어진다. www.acmicpc.net 💡 풀이 방식 • 구현, 시뮬레이션 필요 자료구조 - 인접한 4방향 탐색용 dx/dy배열 - 폭탄 터질 시간 기록용 2차원 배열 timeArr ⭐ - 폭탄이 터질 시간나타내는 int형 변수 time (⚠ 1부터 시작!!) 1. 격자를 입력받으면서, 폭탄인 경우 폭탄 터질 시간을 기록한다. if(board[i][j] == 'O') timeArr[i][j] = 3; // 폭탄 터질 시간 (놓인 시간 +3) 2. 0초에는 아무 것도 하지 않고, 1초: 가만히 있음 > 2초: 폭..
imname1am
'구현' 태그의 글 목록 (2 Page)