[프로그래머스 알고리즘 고득점 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를 같이 보내주면서 노드 하나씩 보는 방법도 있지만 여기서는 같은 레벨에 있는 단어들을 하나씩 확인하고 다음으..
[프로그래머스 알고리즘 고득점 Kit][동적계획법(Dynamic Programming))][Java] N으로 표현
·
알고리즘 & 자료구조/문제 풀이
https://school.programmers.co.kr/learn/courses/30/lessons/42895 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 처음보는 형태의 dp 문제였다.점화식으로 이전 값을 활용하는 것이 아니라나올 수 있는 결과들을 다음 결과들을 만드는 데 사용한다.여기서 출력 조건이 8개보다 크면 -1을 출력을 하라고 했는데이건 다 풀고 나서야 힌트라는 것을 알게 되었다.8개까지만 구하고 그 이후는 계산할 필요가 없다는 생각으로사용갯수가 1개인 것부터 하나씩 나올 수 있는 결과들을 만들어서 넘어가는 식으로 풀 수 있다.연산의 결과가 중복이 많았기 때문에 Set으로 관리했다.N을 1개..
[프로그래머스 알고리즘 고득점 Kit][그래프][Java] 방의 개수
·
알고리즘 & 자료구조/문제 풀이
https://school.programmers.co.kr/learn/courses/30/lessons/49190 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr내가 지나간 점을 내가 지나 온 길이 아닌 방향으로 도달한다면 하나의 방이 생김그렇다면 내가 밟은 점을 기록하고 다시 도달했을 때밟은 점인지 지나온 길인지 아닌지 판별해야함x * row + y 와 같은 인코딩 방식 + Set 으로 진행하려다가class로 풀어보고 싶었음같은 x값 y값이라도 객체가 다르면 다르다고 인식하기 때문에equals 와 hashCode를 오버라이드 해줘서 같은 좌표면 같은 점이라 인식하도록 함문제를 풀 수 있었음여기서 교점이 꼭 점이..
[프로그래머스 알고리즘 고득점 Kit][동적계획법(Dynamic Programming))][Java] 정수 삼각형
·
알고리즘 & 자료구조/문제 풀이
https://school.programmers.co.kr/learn/courses/30/lessons/43105 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr위에서부터 내려온다고 가정하면 바로 아래 왼쪽 값이 더 크다고 해서 그 경로가 최대로 가는 경로가 아닐 수 있음그래서 생각하기 어려움밑에서부터 올라간다고 생각하면특정 노드를 기준으로 최대가 되려면 밑에 2개의 값 중 큰 것만 고르면됨그렇게 맨 밑에서 부터 큰 값들을 골라서 위로 올라가면 최종엔 최대 합만 남음class Solution { public int solution(int[][] triangle) { int N = triangle..
[프로그래머스 알고리즘 고득점 Kit][동적계획법(Dynamic Programming))][Java] 등굣길
·
알고리즘 & 자료구조/문제 풀이
https://school.programmers.co.kr/learn/courses/30/lessons/42898 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr현재 서 있는 곳으로 올 수 있는 방법은1. 왼쪽에서 오른쪽으로 한칸(numOfShortestPath[x-1][y])2. 위쪽에서 아래쪽으로 한칸(numOfShortestPath[x][y-1])2개의 합이 현재 서 있는 곳으로 올 수 있는 경우의 수중간 block 된 곳은 continue이 방법을 시작 점 부터 하나씩 채워나간다.class Solution { final int MOD = 1_000_000_007; public in..