전체 글 211

[프로그래머스] H-Index (Java)

#문제 https://programmers.co.kr/learn/courses/30/lessons/42747# 코딩테스트 연습 - H-Index H-Index는 과학자의 생산성과 영향력을 나타내는 지표입니다. 어느 과학자의 H-Index를 나타내는 값인 h를 구하려고 합니다. 위키백과1에 따르면, H-Index는 다음과 같이 구합니다. 어떤 과학자가 발표 programmers.co.kr #소스코드 import java.util.*; class Solution { public int solution(int[] citations) { int answer = 0; // stream 을 얻어서 Integer로 Wrap한 후, 내림차순으로 정렬한 후, int형으로 변환하여 Array로 리턴한다. citations..

[프로그래머스] 행렬의 곱셈 (Java)

#문제 https://programmers.co.kr/learn/courses/30/lessons/12949 코딩테스트 연습 - 행렬의 곱셈 [[2, 3, 2], [4, 2, 4], [3, 1, 4]] [[5, 4, 3], [2, 4, 1], [3, 1, 1]] [[22, 22, 11], [36, 28, 18], [29, 20, 14]] programmers.co.kr #풀이 행렬의 곱셈을 프로그램으로 구현한다. A행렬의 i행과 B행렬의 j행의 모든 성분의 곱을 합한 것이 결과 행렬의(i, j)의 성분이 된다. A행렬의 크기가 m*n, B행렬의 크기가 n*p일 경우 결과 행렬의 크기는 m*p가 된다. https://en.wikipedia.org/wiki/File:Matrix_multiplication_d..

[프로그래머스] 괄호 회전하기 (Java)

#문제 https://programmers.co.kr/learn/courses/30/lessons/76502 코딩테스트 연습 - 괄호 회전하기 programmers.co.kr #소스코드 import java.util.*; class Solution { public boolean isRight(char[] arr){ Stack st = new Stack(); for(int i = 0; i < arr.length; i++){ char cur = arr[i]; if(i == 0) { // 첫 번째 문자가 닫는 괄호일 경우 바로 false 리턴 if(cur == ']' || cur == '}' || cur == ')') return false; // 첫 번째 문자는 일단 Stack에 넣는다. st.push(cu..

[BOJ 2056] 작업 (Java)

#문제 https://www.acmicpc.net/problem/2056 2056번: 작업 수행해야 할 작업 N개 (3 ≤ N ≤ 10000)가 있다. 각각의 작업마다 걸리는 시간(1 ≤ 시간 ≤ 100)이 정수로 주어진다. 몇몇 작업들 사이에는 선행 관계라는 게 있어서, 어떤 작업을 수행하기 위해 www.acmicpc.net #풀이 위상정렬 알고리즘을 이용해서 푼다. #소스코드 import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.*; public class BOJ2056 { public static int N; public static ArrayList[] adjs; public static int[] ind..

[프로그래머스] 튜플 (Java)

#문제 https://programmers.co.kr/learn/courses/30/lessons/64065 코딩테스트 연습 - 튜플 "{{2},{2,1},{2,1,3},{2,1,3,4}}" [2, 1, 3, 4] "{{1,2,3},{2,1},{1,2,4,3},{2}}" [2, 1, 3, 4] "{{4,2,3},{3},{2,3,4,1},{2,3}}" [3, 2, 4, 1] programmers.co.kr #풀이 각 Set의 Element 수로 오름차순 정렬하고 HashSet을 통해 Element 중복 체크를 하며, 중복되지 않는 Element를 차례대로 넣는다. #소스코드 import java.util.*; class Solution { public int[] solution(String s) { int..

[프로그래머스] 배달 (Java)

#문제 https://programmers.co.kr/learn/courses/30/lessons/12978 코딩테스트 연습 - 배달 5 [[1,2,1],[2,3,3],[5,2,2],[1,4,2],[5,3,1],[5,4,2]] 3 4 6 [[1,2,1],[1,3,2],[2,3,2],[3,4,3],[3,5,2],[3,5,3],[5,6,1]] 4 4 programmers.co.kr #풀이 다익스트라 알고리즘을 사용하면 풀 수 있다. #소스코드 import java.util.*; // 노드의 연결된 노드와 거리를 가짐 class Edge { int to; int distance; public Edge(int to, int distance){ this.to = to; this.distance = distance..

[프로그래머스] 다리를 지나가는 트럭 (Java)

#문제 https://programmers.co.kr/learn/courses/30/lessons/42583 코딩테스트 연습 - 다리를 지나는 트럭 트럭 여러 대가 강을 가로지르는 일차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 다리에는 트럭이 최대 bridge_length대 올라갈 programmers.co.kr #풀이 Queue 자료 구조를 사용하였고 Bridge, Truck을 클래스로 구현하였다. 다리 위에 트럭이 모두 빠져나갈때까지 시간을 1초씩 증가시키며 진입 조건, 진출 조건을 체크하여 트럭을 진입 / 진출 시킨다. #소스코드 import java.util.*; class Bridge{ Queue que; int totalWei..

[프로그래머스] 영어 끝말잇기 (Java)

#문제 https://programmers.co.kr/learn/courses/30/lessons/12981 코딩테스트 연습 - 영어 끝말잇기 3 ["tank", "kick", "know", "wheel", "land", "dream", "mother", "robot", "tank"] [3,3] 5 ["hello", "observe", "effect", "take", "either", "recognize", "encourage", "ensure", "establish", "hang", "gather", "refer", "reference", "estimate", "executive"] [0,0] programmers.co.kr #풀이 단어 배열을 순회하면서 1) 현재 단어가 이미 사용된 단어인지 체크한다..

[프로그래머스] 짝지어 제거하기 (Java)

#문제 https://programmers.co.kr/learn/courses/30/lessons/12973 코딩테스트 연습 - 짝지어 제거하기 짝지어 제거하기는, 알파벳 소문자로 이루어진 문자열을 가지고 시작합니다. 먼저 문자열에서 같은 알파벳이 2개 붙어 있는 짝을 찾습니다. 그다음, 그 둘을 제거한 뒤, 앞뒤로 문자열을 이어 붙 programmers.co.kr 짝지어 제거하기는, 알파벳 소문자로 이루어진 문자열을 가지고 시작합니다. 먼저 문자열에서 같은 알파벳이 2개 붙어 있는 짝을 찾습니다. 그다음, 그 둘을 제거한 뒤, 앞뒤로 문자열을 이어 붙입니다. 이 과정을 반복해서 문자열을 모두 제거한다면 짝지어 제거하기가 종료됩니다. 문자열 S가 주어졌을 때, 짝지어 제거하기를 성공적으로 수행할 수 있는..

[BOJ 21773] 가희와 프로세스 1 (Java)

#문제 https://www.acmicpc.net/problem/21773 21773번: 가희와 프로세스 1 1초일 때 부터 4초일 때 상황을 그림으로 나타내면 아래와 같습니다. 아래 그림에서 주황색은 특정 시점에 스케쥴러가 선택한 프로세스를 의미합니다. www.acmicpc.net #소스코드 import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.PriorityQueue; import java.util.StringTokenizer; public class BOJ21773 { public static class Work implements Comparable{ int id; int time; int priority..