[프로그래머스 알고리즘 고득점 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/86491 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 정답 코드가장 긴 변을 찾으면 모든 명함의 가로 세로 중 긴 변을 포함할 수 있다.그러면 명함들의 긴 변들을 가장 긴 변에 맞춰 넣고나머지 변들 중에 최대가 나머지 사이즈가 될 것이다. 나는 스왑을 하긴 했지만 다하고 나니 그냥widthMax = Math.max(widthMax, Math.max(sizes[i][0], sizes[i][1])); heightMax = Math.max(heightMax, Math.min(sizes[i][0], size..