[프로그래머스 알고리즘 고득점 Kit][깊이/너비 우선 탐색(DFS/BFS)][Java] 타겟 넘버
·
알고리즘 & 자료구조/문제 풀이
https://school.programmers.co.kr/learn/courses/30/lessons/43165 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr프로그래머스 타겟 넘버 풀이이 문제는 각 숫자 앞에 + 또는 -를 붙여서 target 값을 만들 수 있는 경우의 수를 구하는 문제다.각 숫자마다 선택지는 두 가지다.현재 숫자를 더한다.현재 숫자를 뺀다.따라서 DFS를 사용해 모든 경우를 탐색한다.index는 현재 몇 번째 숫자를 보고 있는지 나타내고, sum은 지금까지 계산한 합을 의미한다.모든 숫자를 다 사용했을 때 sum == target이면 정답 개수를 1 증가시킨다.즉, 이 문제는 + / - 선택..
[프로그래머스 알고리즘 고득점 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][스택/큐][Java] 프로세스
·
알고리즘 & 자료구조/문제 풀이
https://school.programmers.co.kr/learn/courses/30/lessons/42587 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr이 문제의 핵심은 큐의 순서를 유지하면서도, 현재 프로세스보다 우선순위가 높은 프로세스가 남아 있는지 판단하는 것이다.처음에는 큐를 직접 순회하면서 더 높은 우선순위가 있는지 확인할 수도 있다. 하지만 이 문제에서는 우선순위가 1부터 9까지로 제한되어 있다. 따라서 각 우선순위의 남은 개수를 배열로 관리하면, 현재 프로세스가 실행 가능한지 더 간단하게 판단할 수 있다.각 프로세스는 우선순위와 원래 위치를 함께 가진 객체로 저장했다. 큐에서 프로세스의 위치..
[프로그래머스 알고리즘 고득점 Kit][깊이/너비 우선 탐색(DFS/BFS)][Java] 여행경로
·
알고리즘 & 자료구조/문제 풀이
https://school.programmers.co.kr/learn/courses/30/lessons/43164 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr백트래킹으로 접근했습니다.티켓으로 도착한 곳의 출발지가 같은 티켓을 사전순으로 접근하면서가장 먼저 n개의 티켓을 사용한 경로를 반환.알파벳 순이 먼저인 경로를 반환하라고 명시되어 있기 때문에알파벳순으로 정렬 후에 백트랙킹으로 경로를 찾습니다.import java.util.*;class Solution { String[][] sortedTickets; boolean[] used; String[] answer; int n; ..
[프로그래머스 알고리즘 고득점 Kit][스택/큐][Java] 기능 개발
·
알고리즘 & 자료구조/문제 풀이
https://school.programmers.co.kr/learn/courses/30/lessons/42586?language=java 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 1. 각 기능의 남은 배포 기간을 구한다. (= 배포되는 날짜)2. 처음 배포되는 날짜를 기준으로 다음 기능이 더 작다면 같이 배포(cnt++)3. 다음 기능이 더 크다면 같이 배포 못하니까 기준을 더 큰 기능 날짜로 바꿔주고 현재까지 카운트된 기능 배포(answer.add(cnt))4. 반복주의) 항상 기준과 다음을 비교해서 기준 시점에 배포하기 때문에 기준이 마지막인 것은 따로 배표해줘야함import java.util.*;c..
[프로그래머스 알고리즘 고득점 Kit][깊이/너비 우선 탐색(DFS/BFS)][Java] 단어 변환
·
알고리즘 & 자료구조/문제 풀이
https://school.programmers.co.kr/learn/courses/30/lessons/43163?language=java 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr1. target이 단어 집합에 있나 확인 -> 없어서 틀렸었음2. 하나가 다르면 바꿀 수 있다를 갈 수 있다고 생각하면 Node끼리의 최단 거리로 생각할 수 있다.3. bfs에 begin을 넣고 단어 집합에 하나만 다른 단어를 q에 넣고 count를 늘려서 레벨별로 나아간다.3.1) Node 클래스를 만들어서 count를 같이 보내주면서 노드 하나씩 보는 방법도 있지만 여기서는 같은 레벨에 있는 단어들을 하나씩 확인하고 다음으..