백준 2178 - 미로탐색, 너비우선, 깊이우선, 프로그래머스, 알고리즘, Programmers, Stack, Queue, Hash, 코딩테스트, Algorithm, 풀이과정, Leetcode, 릿코드, 코딩테스트, Tech interview, search, greedy, baekjoon, acmicpc..
입력이 Scanner로 넣으면 계속 런타임에러가 나서 바꾸고 됨 // Process // 1. Input n, m, maze array // 2. Prepare queue for BFS // 3. 시작부터 목적지(가장오른쪽가장아래) 도착, 또는 큐가 빌 때까지 반복한다. // 3.1. 큐에서 빼서, 이동이 유효하면 4방향 중 이동 가능한 곳을 찾아서 큐에 넣어둔다. // 3.2. 목적지에 도착했는지 확인한다. 도착했으면, 해당 depth를 세고 종료한다. // 4. 센 카운트 출력한다. import java.io.*; import java.util.*; class Node { int row = 0; int col = 0; int depth = 0; public Node(int row, int col, i..
백준 2437 - 저울, 문제풀이, 프로그래머스, 알고리즘, Programmers, Stack, Queue, Hash, 코딩테스트, Algorithm, 풀이과정, Leetcode, 릿코드, 코딩테스트, Tech interview, search, greedy, baekjoon, acmicpc
// Process // 1. Input total, weights // 2. 입력 weights는 체크한다. // 3. Sort weights // 4. 체크배열을 순회한다. // 4.1. weights로 무게 잴 수 있는지 확인한다. // 4.2. 가능하면 넘어가고, 불가하면 저장하고 빠져나간다. // 5. 불가 저장값 반환한다. import java.io.*; import java.util.*; class Scale { public static void main(String args[]) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int total = Integer.pars..
백준 13305 - 주유소, 문제풀이, 프로그래머스, 알고리즘, Programmers, Stack, Queue, Hash, 코딩테스트, Algorithm, 풀이과정, Leetcode, 릿코드, 코딩테스트, Tech interview, search, greedy, baekjoon, acmicpc
// Process // 1. Input 도시개수, 도시간기름소모량, 도시별기름가격. e.g. 4, 2 3 1, 5 2 4 1 // 2. 끝 도시 도착까지 반복한다. // 2.1. 현재있는 도시의 기름가격보다 싼 도시까지 가는 기름을 채운다. // 2.2. 이동한다. // 3. 왼쪽부터 오른쪽 전체 도시를 가는 최소비용을 반환한다. import java.io.*; import java.util.*; class GasStation { public static void main(String args[]) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); // 1. int cities = I..
백준 1715 - 카드 정렬하기, 문제풀이, 프로그래머스, 알고리즘, Programmers, Stack, Queue, Hash, 코딩테스트, Algorithm, 풀이과정, Leetcode, 릿코드, 코딩테스트, Tech interview, search, greedy, baekjoon, acmicpc
// Process // 1. 총 카드묶음 개수, 각 카드묶음의 크기들 입력 받는다. // 2. 각 카드묶음의 크기들을 입력 받을 때, 추후에 최소값을 찾기 쉽도록 우선순위 큐를 이용한다. // 3. 남은 카드묶음이 1개가 될 때까지 반복한다. // 3.1. 최소크기 카드묶음을 빼둔다. (first) // 3.2. 최소크기 카드묶음을 빼둔다. (second) // 3.3. 비교한 횟수(first + second)를 전체 비교횟수에 더한다. // 3.4. 합쳐진 카드묶음크기를 다시 남은 카드묶음에 추가해둔다. // 4. 전체 비교횟수를 반환한다. import java.util.*; import java.io.*; class CardSorting { public static void main(String[]..
백준 1080 - 행렬, 문제풀이, 프로그래머스, 알고리즘, Programmers, Stack, Queue, Hash, 코딩테스트, Algorithm, 풀이과정, Leetcode, 릿코드, 코딩테스트, Tech interview, search, greedy, baekjoon, acmicpc
// Process // 1. Input n, m, matrixA,B // 2. Check are matrixA,B same // 3. Check n >= 3, m >= 3 // 4. Iterate 0 to n-2 // 4.1. Iterate 0 to m-2 // 4.1.1. Flip 3x3 // 4.1.2. Check if they are same now -> if so return count // 5. Return count import java.util.*; import java.io.*; class Matrix { public static boolean[][] flip3x3(boolean[][] boolMat, int col, int row) { for (int i = col; i < col+3;..
백준 11047 - 동전 0, 문제풀이, 프로그래머스, 알고리즘, Programmers, Stack, Queue, Hash, 코딩테스트, Algorithm, 풀이과정, Leetcode, 릿코드, 코딩테스트, Tech interview, search, greedy, baekjoon, acmicpc
그리디 - 채울 값어치를 최대한으로 채울 수 있는 가치 코인을 최대 개수로 채워나간다. // Process // 1. 코인 개수 입력받는다. 만드려는 값어치를 입력받는다. 코인 개수 만큼의 코인들의 값어치들을 입력받는다. (각 값어치는 전부 배수 관계, 오름차순) // 2. 코인값어치 배열이 오름차순이므로, 뒤에서부터 만드려는 값어치가 채워질 때까지 반복한다. // 2.1. 현재 차례의 코인 가치보다 채워야할 값어치가 더 남아있는지 확인해서 // 2.1.1. 더 남아있으면 -> 채울수 있는만큼의 개수 세고, 채워야할 가치를 그만큼 줄인다. // 3. 센 개수를 반환한다. import java.util.Scanner; class CoinZero { public static void main(String[]..
백준 11399 - ATM, 문제풀이, 프로그래머스, 알고리즘, Programmers, Stack, Queue, Hash, 코딩테스트, Algorithm, 풀이과정, Leetcode, 릿코드, 코딩테스트, Tech interview, search, greedy, baekjoon, acmicpc
// Process // 1. 인출할 인원, 각 인원이 인출에 걸리는 시간을 입력받는다. // 2. 인출에 걸리는 시간을 오름차순으로 정렬한다. // 3. 인원 전체 반복한다. // 3.1. 이전사람이 걸렸던 시간 + 해당 순서 사람이 걸리는 시간 = 추가될 시간 // 3.2. 전체 소요시간에 추가될 시간을 더한다. // 4. 전체 소요시간 반환한다. import java.io.IOException; import java.util.Scanner; import java.util.*; class Main { public static void main(String args[]) throws IOException { Scanner scanner = new Scanner(System.in); // 1. int n..
백준 그리디 - 설탕배달, 문제풀이, 프로그래머스, 알고리즘, Programmers, Stack, Queue, Hash, 코딩테스트, Algorithm, 풀이과정, Leetcode, 릿코드, 코딩테스트, Tech interview, search, greedy, baekjoon, acmicpc
// Process // 1. Input n // 2. 5씩 배달할 수 있는 최대 횟수를 구한다. // 3. 만족할 때까지 반복한다. // 3.1. 최대횟수로 5씩 배달하고 남은 나머지가 3의 배수인지 확인한다. // 3.1.1. 3의 배수이면 -> 만족하고 끝, 5횟수와 3횟수를 더한 값 리턴 // 3.1.2. 아니면 -> 5의 최대횟수를 줄이고, 나머지에 5를 더한다. // 3.1.2.1. 이 때, 5의 최대횟수가 0보다 작으면 (5, 3으로 해결 할 수 없는 숫자이면) -> -1로 종료한다. import java.io.IOException; import java.util.Scanner; class Main { public static void main(String[] args) throws IOEx..