백준 알고리즘(BOJ)(46)
-
BOJ_3040_백설 공주와 일곱 난쟁이
1. 구분: 브루트포스 알고리즘 언어: java 전략 조합을 통해 9명의 난쟁이 중 7명의 난쟁이를 고른다 각 모자의 합이 100인 난쟁이 조합이 답이다 2. 코드 import java.util.Scanner; public class BOJ_3040 { private static int[] hat, real; public static void main(String[] args) { Scanner scanner = new Scanner(System.in); hat = new int[9]; real = new int[7]; for(int i = 0; i
2022.08.07 -
BOJ_11724_연결 요소의 개수
1 구분: 그래프 이론, 그래프 탐색, BFS, DFS 언어: Java 전략 그래프들의 연결 관계를 인접 리스트를 이용하여 표현한다 - Node클래스 생성, Node배열 생성 노드 1번 부터 BFS를 통해 차례로 방문을 한다 - 방문 여부 체크 2. 코드 import java.util.LinkedList; import java.util.Queue; import java.util.Scanner; public class Main{ //연결 리스트로 그래프를 받을 예정 static class Node{ int node; //노드 자체 Node link;//연결된 것 Node(int node, Node link){ this.node = node; this.link = link; } } public static ..
2021.12.15 -
BOJ_1012_유기농 배추
1 구분: 그래프 이론, 그래프 탐색, DFS, BFS 언어: Java 전략 배추의 인접한 부분을 묶어, 전체 덩어리의 개수를 구한다 배추가 있다면 그 부분을 깊이 우선 탐색을 통해 인접한 배추들을 구한다 이미 방문한 배추는 또 방문하지 않는다 2. 코드 import java.util.LinkedList; import java.util.Queue; import java.util.Scanner; public class Main { static int X, Y; static boolean[][] visit; //지렁이 방문 여부를 나타냄 static int[][] map; //배추 밭 //좌표를 담을 class생성 static class Node{ int y, x; Node(int y, int x){ thi..
2021.12.15 -
BOJ_14620_꽃길
1 구분: 브루트포스 알고리즘 언어: Java 전략: 꽃밭의 정보를 담는 class 생성, 이를 ArrayList에 보관(조합에 유리) 꽃밭에서 3 자리를 조합으로 선정 각 자리에 꽃잎을 두었을 때, 겹치거나 범위가 나가는지 확인 꽃이 놓인 자리의 땅 값을 계산 최소 비용을 갱신하며 구해 2. 코드 import java.util.ArrayList; import java.util.Scanner; public class Main { static int[][] map;//전체 가격을 담을 배열 static int n, min; //좌표, 가격을 담을 class static class Place{ int x, y, cost; Place(int y, int x, int cost){ this.y = y; this...
2021.12.10 -
BOJ_16439_치킨치킨치킨
1 구분: 부르트포스 언어: Java 전략: 치킨 3가지 종류를 선택한다(조합) 각 사람별로 선택된 치킨 중 가장 선호도가 큰 것을 고른다 선택된 각 선호도를 더한 값을 계속 매 조합마다 최대값으로 갱신한다 2. 코드 import java.util.Scanner; public class Main { static int m, n; //치킨 종류 m, 사람 수 n static int[][] chicken; //사람마다 치킨의 선호도들을 담을 배열 static int max; public static void main(String[] args) { Scanner scanner = new Scanner(System.in); n = scanner.nextInt(); m = scanner.nextInt(); chi..
2021.12.07 -
BOJ_15721_번데기
1 구분: 구현, 시뮬레이션 언어: Java 전략: 고정적인 부분(뻔 - 데기 - 뻔 - 데기)과 변화하는 부분(뻔(xN번) - 데기(xN번))을 분리 구해야 하는 것이 '뻔'인지 '데기'인지 잘 구분하여 개수를 세고, 도달하였는지 체크 도달 하였다면 전체 '뻔' 개수와 '데기' 개수를 더하여 총 몇 번 순선이 돌았는지 확인 전체 사람 수 만큼 나누고, 1을 뺌(사람의 번호가 0부터 시작) 2. 코드 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); int t = scanner...
2021.12.07