알고리즘/Lv2. 프로그래머스 30

[프로그래머스] [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/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..

[프로그래머스]의상 -JAVA

https://school.programmers.co.kr/learn/courses/30/lessons/42578 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 코니는 변태인가보다..경우의 수를 생각해보면 어떤 한 종류를 아예 안입는 경우까지 생각하면종류의 아이템 개수 + 1 를 전부 곱해주고 싹 다 벗은 경우를 -1 해주면 될 것이다.import java.util.*;class Solution { public int solution(String[][] clothes) { int answer = 1; Map map = new H..

[프로그래머스] 구명보트 -JAVA

https://school.programmers.co.kr/learn/courses/30/lessons/42885 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 모든 인원 중 가장 무거운 사람과 가벼운 사람을 태워본다.limit를 넘는다면 가장 무거운 사람은 그 누구와도 같이 탈 수 없다.그러므로 가장 무거운 사람만 타야한다.그 다음 2 번 째로 무거운 사람과 가장 가벼운 사람을 태운다.limit 안쪽이라면 그대로 두명을 태우고 이 과정을 반복하면 된다. 배열을 오름차순 정렬하고 양방향으로 데이터를 만질 수 있는 deque를 사용하였다. import java..

[프로그래머스] 혼자놀기의달인 -JAVA

https://school.programmers.co.kr/learn/courses/30/lessons/131130 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr한 숫자를 뽑으면 하나의 그룹이 생성된다.원리는 어떤 숫자를 뽑으면 마지막으로 그 숫자로 돌아오게 되어있다.카드 한개를 뽑고 그룹의 크기를 저장하고 다시 하나를 뽑아서 카드 덱이 다 뽕빨날때까지 시행한다.이미 뽑힌 숫자라면 다른 그룹에 속해있는 수이니 넘어간다.최종적으로 뽑힌 여러 그룹을 오름차순 정렬해서 2개를 곱해주면 될 것이다.import java.util.ArrayList;import java..