알고리즘 6

[프로그래머스] 베스트앨범 (LEVEL 3)

문제링크 문제접근 ❓ HashMap 장르별 재생곡들을 저장하기위해서 구조를 가지는 Map 자료구조를 사용 PriorityQueue sort 메소드를 따로 사용하지 않고 재생횟수를 정렬하기 위해서 사용 Solution import java.util.Map; import java.util.HashMap; import java.util.PriorityQueue; import java.util.Collections; import java.util.List; import java.util.ArrayList; class Solution { class Music implements Comparable { int no; int play; public Music(int no, int play) { this.no = no..

[백준] 빙산(골드4)

문제링크 문제접근 ❓ bfs 👌 1. 남아있는 빙산이 있는지 판별하는 메서드 👌 2. 일년 뒤 녹아버린 빙산의 모습을 구하는 메서드 👌 3. 빙산이 몇덩어리인지 구하기위해서 bfs 탐색으로 방문처리하는 메서드 오답노트 ❓ 오답 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.LinkedList; import java.util.Queue; import java.util.StringTokenizer; /** * @author comkkyu * @since 22. 1. 17 * * 백준 2573 - 빙산 * https://www.acmicpc.net/prob..

알고리즘/백준 2022.01.17

[백준] 바이러스(실버3)

문제링크 문제접근 ❓ bfs dfs 방문체크를 하면서 연결된 컴퓨터에 대해서 완전탐색을 하고 새로운 컴퓨터를 탐색할 때마다 cnt를 증가시켜서 감염된 컴퓨터의 수를 구하면 되는 쉬운문제였다. Solution import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.LinkedList; import java.util.Queue; import java.util.StringTokenizer; public class B2606_Main { private static ArrayList[] adjList; private stat..

알고리즘/백준 2022.01.14

[프로그래머스] 오픈채팅방(LEVEL 2)

문제링크 문제접근 ❓ HashMap 오답노트 ❓ 오답 코드 import java.util.*; class Solution { List answers; // 채팅방 입/퇴장 기록 리스트 Map idMap; // 채팅방에 접속한 이력이 있는 아이디 map final String COME_IN = "님이 들어왔습니다."; final String GO_OUT = "님이 나갔습니다."; public String[] solution(String[] record) { String[] answer = {}; answers = new ArrayList(); idMap = new HashMap(); for (String s : record) { String[] arr = s.split(" "); // arr[0] : 명령..

[프로그래머스] 입국심사(LEVEL 3)

문제링크 문제접근 ❓ 이분탐색 💡 심사하는 시간은 1부터 max(times[i]) * n 까지 존재한다. 모든 사람을 심사할 수 있는 최소 시간을 찾는 것이 이 문제의 해답이다. 1 ~ max(times[i])*n 사이의 적절한 값을 찾아야 하고 상수값의 범위가 10억 이기때문에 굉장히 크게 주어질 수 있는 상황이다. 따라서 최대한 시간을 단축해야하는 문제이다. 그래서 이진탐색으로 1 ~ max(times[i])*n 사이에서 값을 찾는 것이다. mid 값을 통해서 mid 시간안에 처리할 수 있는 총 사람수를 구하고 (mid / times[i] 연산을 통해서) [해당시간안에 처리할 수 있는 사람 수] 와 [목표 사람수]를 비교한다. [처리할수 있는 사람수]가 [처리해야되는 사람수]보다 많으면 시간을 너무 ..

[탐색] 깊이 우선 탐색(DFS) 과 너비 우선 탐색(BFS)

그래프란? 정점과 간선으로 이루어진 자료구조의 일종. G = (V, E) 그래프 탐색 하나의 정점으로부터 시작하여 차례대로 모든 정점들을 한 번씩 방문하는 것 Ex) 특정 도시에서 다른 도시로 갈 수 있는지 없는지, 전자 회로에서 특정 단자와 단자가 서로 연결되어 있는지 깊이 우선 탐색(DFS, Depth-First Search)의 개념 루트 노드(혹은 임의의 다른 노드)에서 시작해서 다음 분기(branch)로 넘어가기 전에 해당 분기를 완벽하게 탐색하는 방법 미로를 탐색할 때 한 방향으로 갈 수 있을 때까지 계속 가다가 더 이상 갈 수 없게 되면 다시 가장 가까운 갈림길로 돌아와서 이곳으로부터 다른 방향으로 다시 탐색을 진행하는 방법과 유사함 즉 넓게(wide) 탐색하기 전에 깊게(deep) 탐색함 모..

알고리즘 2021.03.10