분류 전체보기229 [Algorithm] Brute Force 이해하기 Brute Force(완전 탐색) 단순히 힘만으로 풀겠다는 알고리즘을 의미한다. 즉, 모든 것을 다 해보겠다는 의미이며, 숫자 4자리 비밀번호를 풀어야 하는 경우 0000부터 9999까지 모두 대입하는 것을 예로 들 수 있다. Brute Force 풀이 방법 1. for / while loop 활용(간단한 문제의 경우) 2. 재귀함수 활용(복잡한 문제의 경우) 2022. 11. 26. [Algorithm] BFS-2 import java.awt.Point; import java.util.LinkedList; import java.util.Queue; import java.util.Scanner; public class BfsIceCream { // 결과적으로 이 코드는 아이스크림 재료를 부을 수 있는 칸 0이 나오면 카운트를 증가하고, // 그곳의 상하좌우, 그 상하좌우의 또 상하좌우들을 전부 1로 만들어줘서 0으로부터 아이스크림이 생성될 수 있는 모든 곳을 1로 바꿔주는 코드이다. // 즉 0이 있다면 1로 만들고 카운트 증가 & 거기서부터 아이스크림이 만들어질 수 있는 모든 공간 1로 변경 // 더이상 1로 바꿀 것이 없다면 다음 칸에서 다시 0인지 체크 static int n = 0; static int m =.. 2022. 11. 26. [Algorithm] DFS-2 import java.util.Scanner; public class DfsIceCream { // 결과적으로 이 코드는 아이스크림 재료를 부을 수 있는 칸 0이 나오면 카운트를 증가하고, // 그곳의 상하좌우, 그 상하좌우의 또 상하좌우들을 전부 1로 만들어줘서 0으로부터 아이스크림이 생성될 수 있는 모든 곳을 1로 바꿔주는 코드이다. // 즉 0이 있다면 1로 만들고 카운트 증가 & 거기서부터 아이스크림이 만들어질 수 있는 모든 공간 1로 변경 // 더이상 1로 바꿀 것이 없다면 다음 칸에서 다시 0인지 체크 static int n = 0; static int m = 0; static String str = ""; static int[][] arr = new int[1000][1000]; public.. 2022. 11. 26. [Algorithm] BFS-1 import java.util.ArrayList; import java.util.LinkedList; import java.util.Queue; public class BreadthFirstSearch { // BFS // [BFS 알고리즘] 큐 사용 // peek() : Queue에 맨 앞에 있는 데이터를 가져온다 (Queue에서 꺼내진 않음) // poll() : Queue에 맨 앞에 있는 데이터 꺼낸다 // offer() : Stack에 데이터를 삽입 // (6)--(2)--(1)--(3)--(5) // | / | \ // (8) (4)--(7) public static boolean[] visited = new boolean[9]; public static ArrayList graph = new .. 2022. 11. 26. [Algorithm] DFS-1 import java.util.ArrayList; public class DepthFirstSearch { // DFS // [DFS 알고리즘] 스택 사용 // peek() : Stack 최상단에 있는 top data 반환한다(Stack에서 꺼내진 않음) // pop() : Stack에 있는 데이터 꺼낸다 // push() : Stack에 데이터를 삽입한다 // isEmpty() : Stack 비어있는지 확인한다 // empty() : Stack을 초기화한다 // size() : Stack Size를 반환한다 // (6)--(2)--(1)--(3)--(5) // | / | \ // (8) (4)--(7) public static boolean[] visited = new boolean[9]; public.. 2022. 11. 26. [Algorithm] DFS & BFS 이해하기 DFS : 한 드라마를 몰아서 본다(Stack이나 재귀함수를 사용) BFS : 여러 드라마를 한 편씩 본다.(Queue나 LinkedList를 사용) DFS 또는 BFS로 풀어야 하는 대표적인 유형 1. 경로 탐색 유형(최단거리, 시간) 2. 네트워크 유형(연결) 3. 조합 유형(모든 조합 만들기) DFS가 동작 검증이 쉽다. 하나씩 조합을 만들어서 정답과 비교하기 때문에 조합이 잘 나왔는지 확인이 쉽다. 하지만 수행 시간 관점에서는 복불복 운이 좋으면 첫 번째 조합이 최적의 답, 최악의 경우에는 모든 조합을 다 만들어 보면서 시간을 낭비하게 된다. BFS는 한 번에 여러 조합들을 한 칸 한 칸씩 만들다 보니 조합이 완성되어 정답과 비교하는 시점에 언제 이렇게 만들어졌는지 또는 어디서부터 틀린 건지 분석.. 2022. 11. 26. [Algorithm] Greedy-1 public class Greedy { // 그리디 // 금액 n과 거스름돈 단위 배열 arr이 주어질 때 최소한의 동전 갯수로 거스름돈을 주려고 한다. public static void solution(int n, int[] arr) { int cnt = 0; int val = 0; for (int i = 0; i < arr.length; i++) { cnt += n / arr[i]; n = n % arr[i]; if (n == 0) { System.out.println(cnt + "개의 동전만으로 거스름돈 가능"); break; } } } public static void main(String[] args) { // TODO Auto-generated method stub int n = 1260; i.. 2022. 11. 26. [Java] PCCP 모의고사 1회 문제 풀이 정답 [Java] PCCP 모의고사 1회 외톨이 알파벳 : https://dev-skill.tistory.com/15 [Java] PCCP 모의고사 1회 외톨이 알파벳 import java.util.*; public class PccpTest1_1 { // PCCP 모의고사 1회 1번 외톨이 알파벳 public static String solution(String input_string) { String answer = ""; char tempChar; int tempCnt = 0; int repeatCnt = 0; Queue q = new LinkedList(); HashMa dev-skill.tistory.com [Java] PCCP 모의고사 1회 체육대회 : https://dev-skill.tistory.. 2022. 11. 26. [Java] PCCP 모의고사 1회 운영체제 import java.util.PriorityQueue; public class PccpTest1_4 { // PCCP 모의고사 1회 4번 운영체제 public static long[] solution(int[][] program) { long[] answer = {}; long callTime = 0; // OS 호출 시각 int runningTime = 0; // OS 수행 시간 long totalRunningTime = 0; // 전체 OS 종료까지 총 소요 시간 long blankTime = 0; // OS가 실행중이지 않은 시간 answer = new long[11]; // 크기 11 고정 // STEP 1. ORDER BY 호출 시각, 점수인 우선순위 큐 만들기(전체 OS 담을 우선순위 큐) .. 2022. 11. 26. 이전 1 ··· 21 22 23 24 25 26 다음