728x90

프로그래머스 37

[Programmers] 완전범죄 JAVA

[Programmers] 완전범죄 - LV 2접근dfs (백트래킹)풀이A와 B도둑이 팀을 이루어 모든 물건을 훔칠 때 A 도둑이 남기는 흔적의 최소 개수를 구하는 문제이다. 2025 코드챌린지 2차 예선 문제로 2 레벨의 문제였는데 많이 어렵게 느껴졌던 2 레벨이었다. dfs를 쓰면 될 거 같은 문제였는데 방문체크가 생각처럼 잘 되지 않아 시간초과가 계속 발생했다. 물건을 A도둑이 훔칠지 B도둑이 훔칠지에 따라 분기가 나눠지는데 배열을 통해 방문체크를 하니 뭔가 잘 맞아떨어지지 않았다. private static int minATrail = Integer.MAX_VALUE; public static int solution(int[][] info, int n, int m) { Se..

[Programmers] 서버 증설 횟수 JAVA

[Programmers] 서버 증설 횟수 - LV 2 접근큐풀이2025 코드챌린지 2차 예선 문제로 게임 서버가 증설되는 횟수를 구하는 문제이다. 게임을 이용하는 사람이 m 명 늘어날 때마다 서버가 증설되고 k 시간 동안 유지된다. 각 시간대마다 게임을 이용하는 사람의 수가 주어지고 총 서버 증설 횟수를 구하는 문제인데 m 명 이상의 사람이 접속하는 경우 서버가 증설되어 m 명 미만의 경우 서버가 증설되지 않는 부분을 잘 체크하면 된다.  public int solution(int[] players, int m, int k) { int count = 0; Queue active = new LinkedList(); for (int i = 0; i 큐를 사용해 현재..

[Programmers] 택배 상자 꺼내기 JAVA

[Programmers] 택배 상자 꺼내기 - LV 1 접근계산?풀이코드챌린지 2차 예선 문제로 택배 상자를 요구하는 순서로 쌓아 위에서부터 상자를 뺄 때 총 몇 개의 상자를 빼야 하는지 구하는 문제이다. 상자는 지그재그로 쌓기 때문에 꺼내야 하는 상자의 꼭대기엔 몇 개의 상자가 존재하는지 알 수 없다. 단순하게 일일이 상자를 다 쌓아보고 풀어도 될 거 같지만 단순하게 위의 상자만 빼기 때문에 계산을 통해 구해질 거 같아 해 봤다. public int solution(int n, int w, int num) { int totalLevel = n / w; if (n % w > 0) totalLevel++; int targetLevel = num / w; ..

[Programmers] 지게차와 크레인 JAVA

[Programmers] 지게차와 크레인 - LV 2접근dfs풀이코드챌린지 1차 예선의 3번째 문제 지게차와 크레인 문제이다. 컨테이너가 배열로 주어지고 지게차와 크레인을 사용해 컨테이너를 꺼내고 난 뒤 남아있는 컨테이너의 개수를 반환하는 문제이다. 간단한데 헷갈리는 부분이 있어 헤맸던 문제이다. 크레인은 단순히 요청하는 컨테이너를 모두 제거하면 되기 때문에 간단한 작업이다. 문제는 지게차를 이용한 작업으로 지게차로 컨테이너를 제거하기 위해서는 컨테이너의 4면 중 한 면이 외부와 연결되어 있어야 한다. 단순히 컨테이너의 4면 중 한 면이 공백과 닿아있는 것이 아니라 그 공백이 외부와 닿아있어야 한다는 것이 중점이다.  또 다른 주의 사항인 지게차 작업에만 해당되는 내용으로 작업이 수행되는 request의..

[Programmers] 비밀 코드 해독 JAVA

[Programmers] 비밀 코드 해독 - LV 2접근dfs풀이2025 프로그래머스 코드챌린지 1차 예선의 2번째 비밀 코드 해독 문제이다. 비밀 코드 자체를 맞춰야 하는 것은 아니고 비밀 코드가 될 수 있는 모든 코드의 개수를 구하는 문제이다. 입력한 비밀 코드는 5개로 이루어져 있고 오름차순 정렬된 상태로 주어진다. 입력한 비밀 코드와 정답인 비밀 코드와 일치하는 코드의 개수가 배열로 같이 주어지기 때문에 두 가지를 보고 가능한 모든 비밀 코드의 개수를 찾아내야 한다.  다른 방법이 딱히 떠오르지 않거나 딱 봐도 매우 복잡해 보인다면 보통 무식하게 풀어질 수 있을지 체크한다. 모든 조합을 구한 뒤 입력한 정수와 비교하여 시스템 응답이 일치하는지 체크해 보는 방법이다. 등장하는 숫자는 최대 30까지로..

[Programmers] 유연근무제 JAVA

[Programmers] 유연근무제 - LV 1접근구현풀이2025 프로그래머스 코드챌린지 문제가 업데이트되어 하나씩 풀어 볼 예정이다. 이번 문제는 1차 예선의 가장 쉬운 문제인 유연근무제이다. 주어지는 출근 시간을 기준으로 +10분까지 정시 출근으로 인정이 되고 일주일 동안 평일을 모두 정시 출근에 성공하는 경우 선물을 받게 된다. 선물을 받게 되는 직원의 수를 구해야 하는 문제로 간단한 문제이다.  public int solution(int[] schedules, int[][] timelogs, int startday) { int answer = 0; for (int i = 0; i schedule) { break; ..

[Programmers] 전력망을 둘로 나누기 JAVA

[Programmers] 전력망을 둘로 나누기 - LV 2접근완전 탐색풀이n 개의 송전탑이 트리 형태로 연결되어 있을 때 한 개의 연결을 끊어 나눠진 두 송전탑의 개수를 최대한 비슷하게 맞추는 문제이다. 두 송전탑의 개수의 차가 제일 작을 때 몇 개인지를 구해야 하므로 연결을 끊어 나눠진 두 트리에 있는 탑 개수를 세어 뺀 절댓값을 반환해야 한다.  트리를 표현하기 위한 방법이 배열을 사용한 방법과 List를 사용한 방법으로 풀었다. List로 푼 방법으로 설명을 하겠다. private static class Node { List connected; public Node() { this.connected = new ArrayList(); } ..

[Programmers] 베스트앨범 JAVA

[Programmers] 베스트앨범 - LV 3접근해시풀이해시 카테고리의 문제로 스트리밍 사이트에서 장르 별로 가장 많이 재생된 노래를 두 개씩 모아 베스트앨범을 만드는 문제이다. 노래 수록 기준으로 속한 노래가 많이 재생된 장르를 먼저 찾는다. 가장 많이 재생된 장르라는 것은 해당 장르의 총 재생수를 기준으로 많은 순서대로 수록하게 된다. 장르 내에선 재생수를 기준으로 2 곡을 수록하게 되는데 횟수가 같다면 고유 번호가 낮은 노래를 먼저 수록하면 된다.  뭔가 SQL 문제로 나올만한 내용이긴 한데 해시 카테고리의 문제이고 대충 보면 HashMap을 써야 할 거 같다.  private static class Music { int index; int play; ..

[Programmers] 구명보트 JAVA

[Programmers] 구명보트 - LV 2접근그리디투 포인터풀이무인도에 갇힌 사람들이 구명보트를 통해 탈출하는 문제로 구명보트에는 무게 제한이 있기 때문에 무게 제한을 만족하며 모든 사람을 구출하기 위해 필요한 구명보트 개수의 최솟값을 구하는 문제이다. 그런데 구명보트는 작기 때문에 한 번에 최대 2명씩 밖에 탈 수 없다.  2명, 2명이 한 보트당 최대 인원이다. 이 2명이라는 내용을 제대로 읽지 않아 불 필요하게 복잡한 코드와 함께 통과에 실패했다. 보트의 제한 무게가 40kg 이상 240kg 이하이기 때문에 무게만 맞춘다면 몇 사람이 타던 상관이 없는 줄 알고 풀었는데 보트에는 2명밖에 태울 수 없었다. 사실 너무 간단한 문제였다. public int solution(int[] people..

[Programmers] 피로도 JAVA

[Programmers] 피로도 - LV 2 접근완전 탐색풀이피로도가 주어지고 던전을 돌 때마다 던전이 요구하는 피로도가 소모된다. 던전에 입장하기 위한 최소 피로도가 존재할 때 가장 많은 던전을 탐험할 때 몇 개의 던전 탐험이 가능한지 구하는 문제이다. 그리디나 dp도 생각은 해봤는데 최소 피로도가 존재해 이전 선택이 다음 선택에 영향을 미치다 보니 그냥 완전탐색으로 풀었다.  private static int answer; public int solution(int k, int[][] dungeons) { answer = 0; boolean[] isVisited = new boolean[dungeons.length]; dfs(k, dungeons..

728x90