알고리즘 48

[프로그래머스]등굣길 -JAVA

https://school.programmers.co.kr/learn/courses/30/lessons/42898 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 오른쪽과 아래로만 움직일 수 있는 최단 거리 계산이다.각 위치에서 왼쪽과 위에서 올 수 있는 경우의 수를 다 더해주면 된다.class Solution { public static void main(String[] args) { Solution s = new Solution(); System.out.println(s.solution(4, 3,new int[]..

[프로그래머스] [PCCP 기출문제] 2번 / 석유 시추

https://school.programmers.co.kr/learn/courses/30/lessons/250136 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr bfs로 풀면 될 것이다.import java.util.*;class Solution { public int [] dx = {0,0,-1,1}; public int [] dy = {1,-1,0,0}; public int solution(int[][] land) { int answer = 0; for(int i = 0; i q = new LinkedList(..

[프로그래머스] 요격 시스템 -JAVA

https://school.programmers.co.kr/learn/courses/30/lessons/181188 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 그림만 봐도 이전에 풀었던 문제들과 유사한 점을 알 수 있다. 배열을 시작 좌표값을 기준으로 오름차순 정렬한다.엔드포인트를 끝값으로 놓고 다음 좌표의 시작점이 엔드포인트보다 작다면 다음 좌표의 엔드포인트와 현재 엔드포인트를 비교하여 더 작은 값으로 엔드포인트를 지정한다.다음 좌표의 시작점이 엔드포인트와 같거나 크다면 다음 좌표의 엔드포인트를 엔드포인트로 지정하고 요격 시스템을 추가한다. import..

[프로그래머스]디펜스게임 -JAVA

https://school.programmers.co.kr/learn/courses/30/lessons/142085 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 배열의 요소들을 순서대로 n에 마이너스 연산을 한다.그러다가 n이 0보다 적어지는 순간! 무적권 발동~~그런데 무적권은 적어지는 순간 그 라운드에 써야할까?아니다 최대한 많은 라운드를 격파해야 함으로 싸워왔던 라운드 중 가장 큰 수의 라운드에서 써야한다.그렇다면 매 라운드 병사의 수를 PriorityQueue에 넣고(오름차순 우선) 무적권 발동 시 poll하여 n에 더해주기만 하면 될 것이다.  i..

[프로그래머스]무인도 여행 -JAVA

https://school.programmers.co.kr/learn/courses/30/lessons/154540 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr  문제만 봐도 대번에 느낄 수 있다..이건 dfs or bfs다. X가 아니고 방문하지 않은 곳을 큐에 넣고 상하좌우를 체크해서 다 더해주고list에 넣어주면 될 것이다. import java.util.*;class Solution { static int[] dx = { 1, 0, 0, -1 }; static int[] dy = { 0, 1, -1, 0 }; public Integer..

[프로그래머스]베스트앨범 -JAVA

https://school.programmers.co.kr/learn/courses/30/lessons/42579 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr이 문제는 해시를 이용하여 정렬만 정확히 한다면 어렵지 않은 문제이다. map의 해시를 이용해 장르의 크기를 누적하고 그 값을 기준으로 우선순위 큐에 넣는다. 다시 큐를 하나씩 꺼내어 배열의 요소와 같다면 또 다른 우선순위 큐에 해당 인덱스의 크기를 기준으로 넣는다.최대 2개까지 넣고 list에 넣어주면 끝.import java.util.ArrayList;import java.util.Comparato..

[프로그래머스]최고의 집합 -JAVA

https://school.programmers.co.kr/learn/courses/30/lessons/12938 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr  최근 여러 레벨 3짜리 문제를 다루면서 불신이 생겼다.이게 레벨 3이라고?? 싶은 문제들이 너무 많다.레벨을 볼게 아니라 정답률을 봐야 될 것 같다.(정답률도 뭐..) 직관적으로 느껴지는 것은 n개의 숫자가 거의 똑같아야 될 것이다.그렇다면 s를 n으로 나눈 값을 전부 배열에 넣어주고 s를 n으로 나눈 나머지 값만큼 배열을 순회하며 +1씩 해주면 끝난다.import java.util.*;class ..

[프로그래머스]귤 고르기 -JAVA

https://school.programmers.co.kr/learn/courses/30/lessons/138476 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 최소의 종류로 팔려면 가장 개수가 많은 종류부터 차례대로 팔면 될 것이다.귤 종류마다 개수를 구하고 내림차순 정렬하면 된다. import java.util.*;class Solution { public int solution(int k, int[] tangerine) { int answer = 0; Arrays.sort(tangerine); List list =..

[프로그래머스] 점프와 순간 이동 -JAVA

https://school.programmers.co.kr/learn/courses/30/lessons/12980 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 순간이동 기능은 온 거리 x2 라고 한다.위치가 6일때 생각해보면0 -> 1 점프1 ->2 순간이동2 ->4 순간이동4 ->6 점프로 총 3의 에너지를 사용했다. 하지만 0 -> 1 점프1 ->2 순간이동2 ->3 점프3 ->6 순간이동을 하면 2의 에너지 사용으로 최소 에너지가 된다. 결국 마지막은 점프를 통해 위치에 도달해야만 최소 에너지가 될 수 있다. 역으로 6에서 2로 나눴을 때 33은 2로..

[프로그래머스] 미로 탈출 -JAVA

https://school.programmers.co.kr/learn/courses/30/lessons/159993 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr  시작, 레버, 출구는 모두 랜덤이며 하나씩만 존재한다.그렇다면 각 세 좌표만 구한다면 bfs로 쉽게 풀 수 있을 것이다. import java.util.LinkedList;import java.util.Queue;class Solution { boolean[][] visited; int[] dx = {0,0,-1,1}; int[] dy = {1,-1,0,0}; public i..