[프로그래머스 알고리즘 고득점 Kit][스택/큐][Java] 다리를 지나는 트럭
·
알고리즘 & 자료구조/문제 풀이
https://school.programmers.co.kr/learn/courses/30/lessons/42583 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 핵심트럭은 1초에 1칸씩 이동 (지문엔 명시 안 되어 있고, 예시 표로 유추해야 함)트럭 1대가 다리를 완전히 통과하는 데 정확히 bridge_length초 소요다리 위 트럭들의 무게 합이 weight를 넘으면 안 됨 (대기 중인 트럭 무게는 무시)풀이 전략큐 2개로 관리: waitingQ(아직 다리에 안 오른 트럭), bridgeQ(현재 다리 위 트럭, {진입시각, 무게} 저장)time을 1씩 증가시키며 매초 두 단계를 순서대로 체크내리기: br..
[프로그래머스 알고리즘 고득점 Kit][완전탐색][Java] 모음사전
·
알고리즘 & 자료구조/문제 풀이
https://school.programmers.co.kr/learn/courses/30/lessons/84512 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 풀이 방법DFS로 A,E,I,O,U를 사전순으로 조합해가며 문자열 생성문자열이 하나 완성될 때마다 cnt++target과 일치하면 found = true로 표시하고 탐색 중단 class Solution { char[] alphabets = {'A', 'E', 'I', 'O', 'U'}; int cnt = 0; boolean found = false; public int solution(String word) { ..
[프로그래머스 알고리즘 고득점 Kit][완전탐색][Java] 전력망을 둘로 나누기
·
알고리즘 & 자료구조/문제 풀이
https://school.programmers.co.kr/learn/courses/30/lessons/86971 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 프로그래머스 - 전력망을 둘로 나누기문제 핵심노드 n개, 간선(wires) n-1개 → 트리 구조트리에서 간선 하나를 제거하면 항상 정확히 2개의 컴포넌트로 나뉜다각 간선을 제거했다고 가정하고, 나뉜 두 그룹의 노드 개수 차이가 최소가 되는 경우를 찾는 문제풀이 전략인접 리스트 구성: wires를 이용해 양방향 그래프를 List[]로 만든다간선을 하나씩 제거해보며 BFSwires를 순회하면서 매번 간선 [u, v]를 "제거 대상"으로 정한다u에서 BFS..
[프로그래머스 알고리즘 고득점 Kit][완전탐색][Java] 피로도
·
알고리즘 & 자료구조/문제 풀이
https://school.programmers.co.kr/learn/courses/30/lessons/87946 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr DFS와 백트래킹으로 가능한 모든 던전 탐험 순서를 확인한다.visited 배열로 방문 여부를 관리하고최소 피로도 조건을 만족하는가, 남은 피로도가 소모할 피로도보다 많은 가를 체크하고 탐험을 진행한다. 호출이 끝나면 방문 상태를 되돌린다.각 단계에서 탐험한 던전 수의 최댓값을 갱신한다.class Solution { int k; int[][] dungeons; int dungeonCount; boolean[] visited; ..
[프로그래머스 알고리즘 고득점 Kit][완전탐색][Java] 카펫
·
알고리즘 & 자료구조/문제 풀이
https://school.programmers.co.kr/learn/courses/30/lessons/42842 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kryellow의 약수 쌍을 이용해 노란색 영역의 가로, 세로를 구했다.노란색 영역을 w * h라고 하면 갈색 테두리 개수는 (w + 2) * 2 + h * 2로 계산할 수 있다.이 값이 brown과 같다면 전체 카펫의 크기는 {w + 2, h + 2}가 된다. 정답 코드import java.util.*;class Solution { public int[] solution(int brown, int yellow) { List innerSq..
[프로그래머스 알고리즘 고득점 Kit][완전탐색][Java] 소수 찾기
·
알고리즘 & 자료구조/문제 풀이
https://school.programmers.co.kr/learn/courses/30/lessons/42839?language=java 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr프로그래머스 소수 찾기 풀이이 문제는 주어진 숫자 문자열로 만들 수 있는 모든 숫자 중 소수의 개수를 구하는 문제다.각 숫자 조각을 한 번씩만 사용할 수 있으므로 visited 배열을 사용해 이미 사용한 숫자인지 체크했다.DFS/백트래킹으로 숫자를 하나씩 붙이며 만들 수 있는 모든 순열을 생성했다.예를 들어 "17"이라면 1, 7, 17, 71을 만들 수 있다.중복 숫자가 생길 수 있기 때문에 생성한 숫자는 Set에 저장했다.예를..