Algorithm 124

[백준 - 2512] 나이트 이동 - Java(Feat. DFS vs BFS)

문제 설명 7562번: 나이트의 이동 체스판 위에 한 나이트가 놓여져 있다. 나이트가 한 번에 이동할 수 있는 칸은 아래 그림에 나와있다. 나이트가 이동하려고 하는 칸이 주어진다. 나이트는 몇 번 움직이면 이 칸으로 이동할 수 www.acmicpc.net 풀이 회고 : DFS와 BFS 차이에 대한 고찰 해당 문제에서는 체스판 위에 "나이트"의 "현재 위치"가 주어졌을 때 "특정(목표) 위치"로 갈 수 있는 최소 이동 횟수를 요구하고 있습니다. 즉 특정 지점에서 출발하여 "나이트의 이동 방식"에 맞춰 체스판(그래프) 위 각 좌표(노드)들을 탐색하면서 목표 위치를 찾아내야 합니다. 이때 최소 이동 횟수를 구해야 하므로 각 노드들을 이동할 때마다 이동 횟수를 1씩 더해주어야 합니다. 이러한 탐색 방법에는 DF..

Algorithm/BOJ 2022.03.15

[백준 - 2512] 예산 - Java

문제 설명 2512번: 예산 첫째 줄에는 지방의 수를 의미하는 정수 N이 주어진다. N은 3 이상 10,000 이하이다. 다음 줄에는 각 지방의 예산요청을 표현하는 N개의 정수가 빈칸을 사이에 두고 주어진다. 이 값들은 모두 1 이상 www.acmicpc.net 소스 코드 import java.util.Arrays; import java.util.Scanner; class Main { static int[] budgets; public static void main(String args[]) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); budgets = new int[n]; for (int i = 0; i < n; i++) { budgets..

Algorithm/BOJ 2022.03.08

[백준 - 10815] 숫자 카드 - Java

문제 설명 10815번: 숫자 카드 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10, www.acmicpc.net 소스 코드 import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.util.HashMap; import java.util.Map; import java.util.StringTo..

Algorithm/BOJ 2022.03.08

[프로그래머스] 전화번호 목록 - Java

문제 설명 코딩테스트 연습 - 전화번호 목록 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조 programmers.co.kr 풀이 소스 코드 : Fail(시간초과) class Solution { public boolean solution(String[] phone_book) { boolean answer = true; boolean flag = false; for (int i = 0; i < phone_book.length - 1; i++) { for (int j = i + 1; j < phone_book.length; j++) { if (phone_book[j].len..

[프로그래머스] 위장 - Java(Feat. 삽질 주의)

문제 설명 코딩테스트 연습 - 위장 programmers.co.kr 풀이 회고 이번 문제는 오랫동안 고민하다가 결국에는 힌트(Hint)를 보고야 말았습니다. 먼저 이 문제를 해결하기 위한 당초 저의 접근 방법은 옷을 1개만 선택하는 경우, 2개만 선택하는 경우, 3개만 선택하는 경우(최대 옷의 종류의 개수) 등 각각의 경우별로 옷을 "조합(combination)"할 수 있는 모든 경우의 수를 구하고자 했었습니다. 문제에서 주어진 예시에 적용해보면 다음과 같습니다. 문제 설명에서 주어진 입출력 예시들 한해서는 위와 같은 접근 방법으로 간신히 "구현"할 수는 있었습니다. 다만, 구현하면서도 소스 코드가 점점 길어지는 것을 보면서 "지금 뭔가 잘못되어가고 있다는 것"을 본능적으로 느낄 수 있었습니다... 😇 ..