알고리즘 12

프로그래머스 - 무인도 여행 (자바)

내가 보려고 쓰는 풀이. 문제 링크 [나의 풀이] 전형적인 DFS 문제라 생각했다. 근데 난 코딩테스트 찌랭이라(못해도 너무 못함), 내 풀이에 확신이 없었다. 다 풀고 남의 풀이들 보니, 역시나 DFS나 BFS로 푸는 게 일반적이었음. 전형적인 DFS인데도 불구하고 블로그에 기록하는 이유는, 글로 써야 내 머릿속에 한번 더 들어오기 때문. import java.util.*; class Solution { static char[][] map; static int row, col; static int[] dx = {-1, 1, 0, 0}; static int[] dy = {0, 0, -1, 1}; static boolean[][] check; static int sum = 0; public int[] so..

백준 2573 - 빙산 (자바)

DFS 내가 보려고 기록 문제 링크 코드 빙산 배열을 복사한 배열 생성 ice() : 주변 0 개수 카운트 dfs() : 빙산 덩어리 개수 카운트 while{} 빙산 덩어리가 0개면 break 빙산 덩어리가 2개 이상이 되면 break import java.util.*; import java.io.*; public class Main { static int[][] map; static int N, M; static int answer = 0; static int[] dx = {-1, 1, 0, 0}; static int[] dy = {0, 0, -1, 1}; static boolean[][] check; public static void main(String[] args) throws IOExceptio..

[플로이드 와샬] 프로그래머스 - 배달 (자바)

플로이드 와샬 문제 기록용. 플로이드 와샬 : 정점과 정점 사이의 최소거리를 구하는 알고리즘 내가 보려고 씀. 문제 링크 풀이 출처 (설명 잘 돼있음) 풀이 import java.util.*; class Solution { public int solution(int N, int[][] road, int K) { int answer = 0; int[][] map = new int[N + 1][N + 1]; //모든 map값의 INF값을 넣는다.(플로이드 와샬 쓰기위해) map[정점][정점]은 0으로초기화 for(int i = 1; i < map.length; i++) { for(int j = 1; j < map[1].length; j++) { if(i == j) continue; map[i][j] = 50..

[BFS] 프로그래머스 - 가장 먼 노드 (자바)

시작점 1번 노드로부터 가장 멀리 떨어진 노드가 몇 개인지를 return. BFS로 푸는 문제. 내가 까먹을까봐 기록함. 문제 링크 풀이 출처 (설명 잘 돼있음. 문제는 내 이해력;;) 풀이 import java.util.*; class Solution { public int solution(int n, int[][] edge) { int answer = 0; ArrayList graph = new ArrayList(); int[] distance = new int[n + 1]; boolean[] visited = new boolean[n + 1]; for(int i = 0; i

[DFS] 백준 2468 - 안전 영역 (자바)

내가 까먹을까봐 기록함. 문제 : https://www.acmicpc.net/problem/2468 import java.util.*; import java.io.*; public class Main { static int N; static int[][] arr; static int max; static int maxHeight; static boolean[][] check; public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st; N = Integer.parseInt(br.readLine..

[이분 탐색] 백준 10815 - 숫자 카드 (자바)

이분 탐색 기초 내가 보려고 씀 문제 : https://www.acmicpc.net/problem/10815 이분 탐색 문제지만 사실상 이분 탐색 처음? 공부하는 거라 걍 내 방식대로 풀어봄. ArrayList에 담아서 contains로 판단. 결과는 당연히 시간 초과. [기존 코드 (ArrayList - 시간 초과)] import java.util.*; import java.io.*; public class Main { static int N, M; public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTok..

프로그래머스 - 더 맵게 (자바)

Heap,PriorityQueue 연습 내가 보려고 씀 문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/42626 풀이 출처 : https://easybrother0103.tistory.com/118 https://velog.io/@agugu95/Java-Heap-Binary-Heap Priority Queue 우선순위 큐로 데이터 중에서 우선순위가 높은 데이터를 빠르게 알 수 있다. 큐와 연산이 동일하나 우선순위가 가장 높은 데이터를 알 수 있다. 이를 통해 최대 힙과 최소 힙을 구현 가능하다. ● 최대 값이 우선순위인 큐 = 최대 힙 ● 최소 값이 우선순위인 큐 = 최소 힙 우선순위 큐를 통해 데이터를 정렬하는 것이 heap sor..

프로그래머스 - 귤 고르기 (자바)

문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/138476 풀이 참고 : https://devmoony.tistory.com/170 귤의 종류와 그 개수들을 HashMap에 저장 종류가 뭔지 알 필요 없으므로(갯수만 알면 됨), map의 value들을 list에 저장 list를 크기순(갯수순)으로 내림차순 정렬 개수가 제일 많은 것부터 k 차감 개수의 종류가 바뀔 때 answer는 1씩 증가 k가 0보다 작거나 같으면 종료 import java.util.*; class Solution { public int solution(int k, int[] tangerine) { int answer = 0; Arrays.sort(tangerin..

알고리즘/Map 2023.01.02

프로그래머스 - k진수에서 소수 개수 구하기 (자바)

문제 링크 풀이 출처 1 풀이 출처 2 에라토스테네스의 체 import java.util.*; class Solution { public int solution(int n, int k) { int answer = 0; StringBuilder sb = new StringBuilder(); int num = n; while(num > 0) { sb.append(num % k); num /= k; } String s = String.valueOf(sb.reverse()); int j = 0; for (int i = 0; i < s.length() - 1; i = j) { for (j = i + 1; j < s.length() && s.charAt(j) != '0'; j++) { continue; } if (..