[프로그래머스 알고리즘 고득점 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][깊이/너비 우선 탐색(DFS/BFS)][Java] 퍼즐 조각 채우기
·
알고리즘 & 자료구조/문제 풀이
https://school.programmers.co.kr/learn/courses/30/lessons/84021 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 뭔가 동작이 필요할 때마다 메서드를 분리했더니 엉망이 되어버린 코드...문제가 생겼는데 혼자 고칠 수가 없어서 지피티의 많은 도움을 받았다...무작정 메서드 분리하는 것이 오히려 마이너스임을 깨달았다...나를 조금 덜 믿고 메서드 별로 테스트하자... 정답 코드 1. table에서 블록을 찾는다.2. game_board에서 빈칸을 찾는다.3. BFS로 연결된 칸들을 Shape로 묶는다.4. Shape를 정규화해서 위치 차이를 없앤다. -> 정렬과 0,..
[프로그래머스 알고리즘 고득점 Kit][깊이/너비 우선 탐색(DFS/BFS)][Java] 아이템 줍기
·
알고리즘 & 자료구조/문제 풀이
https://school.programmers.co.kr/learn/courses/30/lessons/87694 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 초기에 메서드도 분리하고 깔끔하게 쓰려고 분리할 거 다하다가복잡해지고... 디버깅도 쉽지 않았다.1. 복잡한 코드일단 메인 아이디어는 주어진 사각형의 테두리를 남겨두고 bfs로 탐색하면서 거리를 업데이트 해주는 것이다.주의했어야하는 부분은 expandedCordinate 메서드 위 주석에 나온 것처럼11111111 이렇게 주어진 사각형 내부 공백이 없어서 테두리만 남길 수 없었기에스케일을 키우는 작업을 했어야했습니다.import java.util.*;c..
[프로그래머스 알고리즘 고득점 Kit][그래프][Java] 순위
·
알고리즘 & 자료구조/문제 풀이
https://school.programmers.co.kr/learn/courses/30/lessons/49191 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 1. 정답 코드 뭔가 스태틱 변수를 안쓰고 메서드로 분리하려다 보니 복잡해졌는데내가 이긴 사람 수와 내가 진 사람 수의 합이 나를 제외한 n-1 과 같으면 순위를 알 수 있다.그래서 2개의 단방향 그래프를 기록하고 bfs 2번을 돌리는 식으로 계산했다.모든 노드의 거리를 알 수 있는 플로이드 워셜로도 풀 수 있다.import java.util.*;class Solution { public int solution(int n, int[][] resul..
[프로그래머스 알고리즘 고득점 Kit][깊이/너비 우선 탐색(DFS/BFS)][Java] 게임 맵 최단거리
·
알고리즘 & 자료구조/문제 풀이
https://school.programmers.co.kr/learn/courses/30/lessons/1844 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 정답 풀이V + E -> N*M + 4(N*M) -> O(NM)간단한 bfs 문제import java.io.*;import java.util.*;class Solution { final static int[] dx = {-1, 1, 0, 0}; final static int[] dy = {0, 0, -1, 1}; static int[][] map; public int solution(int[][] maps) { ..