Java
-
[프로그래머스]입국심사 - JAVA문제풀이/프로그래머스 2021. 3. 5. 14:30
[프로그래머스]입국심사 programmers.co.kr/learn/courses/30/lessons/43238 코딩테스트 연습 - 입국심사 n명이 입국심사를 위해 줄을 서서 기다리고 있습니다. 각 입국심사대에 있는 심사관마다 심사하는데 걸리는 시간은 다릅니다. 처음에 모든 심사대는 비어있습니다. 한 심사대에서는 동시에 한 programmers.co.kr 풀이 심사를 받는데 최소로 소요되는 시간을 반환하는 문제로 소요되는 시간을 기준으로 이분탐색을 하였다. 우선 제일 오래 걸리는 심사위원을 알아내기 위해 times를 정렬해 주었다. 그리고 제일 오래걸리는 심사위원의 시간을 알아내어 최대 시간을 계산해 주었다. 이때 최대 소요 시간이란, 제일 오래걸리는 심사위원이 n명 모두를 심사할때 소요되는 시간이 되므로..
-
[백준]13023: ABCDE - JAVA문제풀이/백준 2021. 3. 4. 14:19
[백준]13023: ABCDE www.acmicpc.net/problem/13023 13023번: ABCDE 문제의 조건에 맞는 A, B, C, D, E가 존재하면 1을 없으면 0을 출력한다. www.acmicpc.net 풀이 모든 경우를 탐색하는 DFS탐색 문제로, A -> B -> C -> D -> E인 관계가 있다면 1을 출력, 아니면 0을 출력하는 문제이다. 위와 같은 연결 관계가 있다면 DFS탐색 깊이가 4가 되는 것을 이용하여 문제를 풀었다. 반복문을 사용하여 시작 순서를 돌아가면서 DFS탐색을 하였고, 탐색 깊이가 4가 되는 순간 1을 출력하고 프로그램을 종료했다. 1이 출력되면 그 이후에는 더 이상 탐색하지 않아도 되기 때문이다. 모든 DFS탐색 동안 1이 출력이 되지 않는다면 위와 같은 ..
-
[프로그래머스]야근 지수 - JAVA문제풀이/프로그래머스 2021. 3. 4. 13:53
문제 programmers.co.kr/learn/courses/30/lessons/12927 코딩테스트 연습 - 야근 지수 회사원 Demi는 가끔은 야근을 하는데요, 야근을 하면 야근 피로도가 쌓입니다. 야근 피로도는 야근을 시작한 시점에서 남은 일의 작업량을 제곱하여 더한 값입니다. Demi는 N시간 동안 야근 피로도 programmers.co.kr 풀이 works 배열의 원소에서 n만큼 뺀 값중 나머지에 대해 제곱의 합이 최소인 값을 찾는 문제이다. 제곱의 합이 최소가 되기 위해서는 works의 각 숫자들이 전체적으로 균형이 맞아야 한다. 예를 들어 첫 번째 예제 입력의 경우, works = {4, 3, 3}이고 n이 4이다. 이때 n시간을 모두 첫 번째 일을 처리하는데 사용하면 남는 시간은 0, 3..
-
[백준 ]5014: 스타트링크 - JAVA문제풀이/백준 2021. 3. 3. 15:08
문제 www.acmicpc.net/problem/5014 5014번: 스타트링크 첫째 줄에 F, S, G, U, D가 주어진다. (1 ≤ S, G ≤ F ≤ 1000000, 0 ≤ U, D ≤ 1000000) 건물은 1층부터 시작하고, 가장 높은 층은 F층이다. www.acmicpc.net 풀이 S -> G로 가는 최단 경로를 찾는 문제이므로 BFS를 사용하여 풀었다. 이미 방문한 층을 다시 방문하면 최단 경로가 아니기 때문에 visited를 사용하여 다시 방문하는 일이 없도록 하였다. 또한 노드 class를 만들어 현재 층의 위치와 현재까지 몇번의 버튼을 눌렀는지 기억하도록 하였다. 이 문제에서 주의할 점이 있는데 예제 입력 1번을 잘 이해했다면 넘어가도 된다. 예를 들어, 예제 1번에서 1 -> 10..
-
[프로그래머스]베스트앨범 - JAVA문제풀이/프로그래머스 2021. 3. 3. 13:36
문제 programmers.co.kr/learn/courses/30/lessons/42579 코딩테스트 연습 - 베스트앨범 스트리밍 사이트에서 장르 별로 가장 많이 재생된 노래를 두 개씩 모아 베스트 앨범을 출시하려 합니다. 노래는 고유 번호로 구분하며, 노래를 수록하는 기준은 다음과 같습니다. 속한 노래가 programmers.co.kr 풀이 HashMap을 사용하는 문제로 HashMap에 관련된 다양한 연산들을 연습해 볼 수 있는 구현, 시뮬레이션 문제였다. 문제는 다음과 같은 과정으로 풀어 나갔다. hashmap에 장르별 play횟수를 중첩해서 더해준다. hashmap의 key값만을 추출하여 리스트를 만들고, 리스트를 play횟수를 기준으로 정렬한다. (hashmap은 순서가 없기 때문에 정렬할 수..
-
[백준]1504: 특정한 최단 경로 - JAVA문제풀이/백준 2021. 3. 2. 17:39
[백준]1504: 특정한 최단 경로 www.acmicpc.net/problem/1504 1504번: 특정한 최단 경로 첫째 줄에 정점의 개수 N과 간선의 개수 E가 주어진다. (2 ≤ N ≤ 800, 0 ≤ E ≤ 200,000) 둘째 줄부터 E개의 줄에 걸쳐서 세 개의 정수 a, b, c가 주어지는데, a번 정점에서 b번 정점까지 양방향 길이 존 www.acmicpc.net 풀이 1에서 시작해서 V1과 V2를 포함하여 N까지 가는 최단 경로 값을 찾는 문제이다. 간단하게 생각하면된다. 다음과 같은 두 경로를 구한 후 둘 중에 더 작은 경로를 출력하면 된다. 최단거리(1 ~ V1) + 최단거리(V1 ~ V2) + 최단거리(V2 ~ N) 최단거리(1 ~ V2) + 최단거리(V2 ~ V1) + 최단거리(V1..
-
[백준]2589: 보물섬 - JAVA문제풀이/백준 2021. 3. 2. 15:34
[백준]2589: 보물섬 www.acmicpc.net/problem/2589 2589번: 보물섬 보물섬 지도를 발견한 후크 선장은 보물을 찾아나섰다. 보물섬 지도는 아래 그림과 같이 직사각형 모양이며 여러 칸으로 나뉘어져 있다. 각 칸은 육지(L)나 바다(W)로 표시되어 있다. 이 지도에서 www.acmicpc.net 풀이 최단거리 중에서의 최대값을 구하는 문제였다. BFS로 각 정점에서의 최단 거리를 구해주고 그 최단 거리 들 중의 최대값을 계산해 주었다. BFS에서 현재 위치와 현재 위치 까지의 거리를 저장해줄 Node class를 만들어서 저장해 주었다. 그리고 이중 for문으로 모든 노드를 확인하면서 '육지'인 경우에만 BFS탐색을 하도록 하였다. 코드 1 2 3 4 5 6 7 8 9 10 11 ..
-
[프로그래머스]여행경로 - JAVA문제풀이/프로그래머스 2021. 3. 2. 13:27
[프로그래머스]여행경로 programmers.co.kr/learn/courses/30/lessons/43164 코딩테스트 연습 - 여행경로 [["ICN", "SFO"], ["ICN", "ATL"], ["SFO", "ATL"], ["ATL", "ICN"], ["ATL","SFO"]] ["ICN", "ATL", "ICN", "SFO", "ATL", "SFO"] programmers.co.kr 풀이 백트랙킹 + 순열을 사용해서 풀었다. 뽑는 순서에 따라 결과가 달라지기 때문이다. 또한 백트랙킹으로 조건에 맞는 모든 경우를 탐색하도록 하였다. 이때 중요한 점은 뽑을 수 있는 순서가 여러개가 될 수 있으며, 이 중에서 알파벳 순서가 앞서는 경로만을 return해야 한다. 아래 예제 2를 읽어보면 이해가 될 것이다..