코테/백준

📖 문제 https://www.acmicpc.net/problem/16945   💡  풀이 방식• 백트래킹1. 3x3 배열에 모든 숫자 1-9를 중복되지 않게 나열한다.2. 나열 후, 해당 배열이 매직 스퀘어( = 가로,세로, /, \의 합이 모두15인지) 확인한다.3. 매직 스퀘어인 경우, 최솟값을 갱신해 정답을 구한다.   🔺 코드1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071import java.util.*;import java.io.*; public class Main {    static int[][]..
📖 문제 https://www.acmicpc.net/problem/15886   💡  풀이 방식• 문자열E와 W가 붙어있는 문자열 EW의 갯수를 구하면 된다...  🔺 코드1234567891011121314151617181920212223import java.util.*;import java.io.*; public class Main {    static int N, cnt;    static char[] map;        public static void main(String[] args) throws IOException {        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));        N = In..
📖 문제 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/16943   💡  풀이 방식• 백트래킹 백트래킹으로 정수 A에 포함된 숫자들의 순서를 섞어 숫자 C를 만든다.이렇게 만든 숫자가 0으로 시작하지 않고, B보다 작은 경우, 정답과 비교해 더 큰 값으로 정답을 갱신한다.  💥 유의사항새롭게 만든 C를 문자열로 봤을 때 0으로 시작하는지 확인해야 한다.  🔺 코드123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657import java.util.*;import java.io.*; public class Main {    static String[] st..
📖 문제 https://www.acmicpc.net/problem/14620    💡  풀이 방식• 브루트포스 + 백트래킹1. 격자를 입력받는다.2. 완전탐색으로 모든 점을 확인한다. 해당 지점에서 꽃을 심을 수 있는 경우, 해당 자리와 상하좌우 자리에 대해 꽃을 심어보고, 뽑은 갯수를 +1하고, 비용을 더한 후 재귀호출한다. 그리고 다음 탐색을 위해 해당 자리와 상하좌우 자리에 대해 값을 초기화한다.   [x행 y열 위치에서 꽃을 심을 수 있는지 확인하는 함수 :  boolean isPossible(int x, int y)]꽃을 심을 수 있는 조건 - 방문한 적 없어야 함 - 4방향 탐색 시     - 꽃잎이 배열 화단 범위를 벗어나선 안 됨     - 꽃잎 자리에 다른 꽃이 핀 경우(visited..
📖 문제 https://www.acmicpc.net/problem/5972   💡  풀이 방식• 다익스트라 전형적인 다익스트라 문제다,,- 최소 여물 비용 배열을 모두 5만*1000 + 1 이상의 큰 값으로 채운다.- 그래프 정보를 양방향으로 입력받는다.- 시작점 1부터 목적지 N까지 최소 비용으로 이동하도록 다익스트라를 진행한다.  🔺 코드123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778import java.util.*;import java.io.*; public class Main {..
📖 문제 https://www.acmicpc.net/problem/17396   💡  풀이 방식• 다익스트라필요 자료구조- 시야에 보이는지 여부 나타내는 1차원 boolean형 배열- 그래프 인접 리스트- 1 ~ N-1번 분기점이 까지 0번째 분기점까지 가는 데 걸리는 최소 시간 배열 (long형)- 분기점 별 방문 표시를 나타내는 1차원 boolean형 배열  1. 각 분기점이 적의 시야에 보이는지 나타낸다.sight = new boolean[N];st = new StringTokenizer(br.readLine(), " ");for(int i = 0 ; i   2. 1 ~ N-1번 분기점이 까지 0번째 분기점까지 가는 데 걸리는 최소 시간 배열을 모두 최댓값인 Long.MAX_VALUE로 초기화한..
imname1am
'코테/백준' 카테고리의 글 목록 (5 Page)