프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr # 핵심 인접 리스트를 사용해서 그래프 구현 이후 BFS 탐색 (가장 멀리 떨어진 노드를 구한다는 것은 즉 최단 거리가 가장 먼 노드를 구한다는 것! 최단거리 탐색 = BFS !!) # 실패 코드 (인접 행렬을 이용한 그래프 구현) import java.util.*; class Solution { boolean[] visited; int[] dist; public int solution(int n, int[][] edges) { int[][] map = new int[n][n]; visited = new bo..
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr # 핵심 이분 탐색을 이용한다 left = 0, right = 최소 심사 시간 * 인원수 로 세팅한 이후 mid = (left + right) / 2 -> mid 시점에서 각 심사관들이 총 몇 명을 처리할 수 있는지를 계산하여 시간이 mid보다 더 필요한지, 혹은 덜 필요한지를 확인!! --> availableCnt += (mid / time) # 처음으로 통과한 코드 import java.util.*; class Solution { public long solution(long n, int[] times) ..
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr # 내가 처음으로 통과한 코드 더보기 import java.util.*; class Solution { private static class Edge { public int to; public int gain; public Edge(int to, int gain) { this.to = to; this.gain = gain; } } Map airportsToIdxMap = new HashMap(); Map idxToAirportsMap = new HashMap(); List adjList = new Linked..
DFS는 스택, BFS는 큐 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 해당 문제를 보면 int[][] computers 이차원 배열을 파라미터로 주는데, 전형적인 인접행렬 형태다! 가장 기본적인 DFS BFS 문제인것 같아 기억이 새록새록 난다 * 인접행렬 사용 시 시간복잡도는 O(V^2) (V: 정점의 개수) # DFS (1) 재귀함수를 통한 DFS - 재귀함수 자체가 내부적으로 스택을 이용하는 것이다. (메소드 호출 시 스택 생성) import java.util.*; class Solution { public int solution(int n, ..
https://www.acmicpc.net/problem/14502 14502번: 연구소 인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다. 연구소는 크 www.acmicpc.net import java.io.*; import java.util.*; public class Main { public static class Node { int y, x; public Node(int y, int x) { this.y = y; this.x = x; } } static int N, M, max, max_area = 0; static int[][] map; static boolean[][] visi..
https://www.acmicpc.net/problem/13460 13460번: 구슬 탈출 2 첫 번째 줄에는 보드의 세로, 가로 크기를 의미하는 두 정수 N, M (3 ≤ N, M ≤ 10)이 주어진다. 다음 N개의 줄에 보드의 모양을 나타내는 길이 M의 문자열이 주어진다. 이 문자열은 '.', '#', 'O', 'R', 'B' www.acmicpc.net import java.io.*; import java.util.Arrays; import java.util.Objects; import java.util.StringTokenizer; public class Main { public static class Node { int y, x; public Node(int y, int x) { this.y ..
https://www.acmicpc.net/problem/11725 11725번: 트리의 부모 찾기 루트 없는 트리가 주어진다. 이때, 트리의 루트를 1이라고 정했을 때, 각 노드의 부모를 구하는 프로그램을 작성하시오. www.acmicpc.net import java.io.*; import java.util.*; public class Main { static int N; static List[] graph; static boolean[] visited; static int[] parents; public static void init_graph() { for(int i = 0; i < N + 1; i++) { graph[i] = new ArrayList(); } } public static void ..