💡Problem Solving 182

[프로그래머스] 이진 변환 반복하기 (Java)

#문제 https://programmers.co.kr/learn/courses/30/lessons/70129 코딩테스트 연습 - 이진 변환 반복하기 programmers.co.kr #풀이 문자열의 초기 length 를 구한 후 0을 제거한 length 와 비교하여 zero count를 구하여 더해준다. 0을 지운 후의 문자열 length의 길이로 Integer.toBinaryString() 함수를 호출하여 이진수 String을 다시 변수에 할당한다. 이후 변환 횟수를 증가시킨다. #소스코드 import java.util.*; class Solution { public int[] solution(String s) { int zeroCnt = 0, transCnt = 0, bfLen = 0, afLen = ..

[BOJ 15900] 나무 탈출 (Java)

#문제 https://www.acmicpc.net/problem/15900 15900번: 나무 탈출 평소에 사이가 좋지 않던 성원이와 형석이가 드디어 제대로 한 판 붙으려고 한다. 성원이와 형석이 둘과 모두 똑같이 친한 인섭이가 대결 종목을 정해 가져왔다. 바로 '나무 탈출' 이라는 보드게 www.acmicpc.net #풀이 Leaf Node의 모든 Depth를 더했을 때 짝수인지 홀수인지에 따라 승패가 결정된다. Node정보를 인접 리스트로 저장한다. (방향성이 없으므로 양쪽에 모두 저장) 현재 Node의 Parent Node는 인접 리스트에서 제거한 후 dfs 탐색을 한다. 인접 노드가 없는 경우 해당 노드는 Leaf Node이므로 현재까지 구한 depth를 count에 더한다. count의 짝/홀 ..

[프로그래머스] 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) 현재 단어가 이미 사용된 단어인지 체크한다..