분류 전체보기
-
[프로그래머스] 마법의 엘리베이터 자바 (Level 2) DFS 완전탐색코딩테스트 2025. 5. 2. 22:43
문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/1486531. 문제 요약주어진 층수 storey를 10의 n제곱값을 더하거나 빼서 0을 만든다.storey를 0으로 만드는데 필요한 최소 횟수를 구한다.2. 핵심 아이디어DFS 방식으로 0까지 차감 or -부터 0까지 증가하는 두 가지방식으로 탐색 및 비교하기.3. 풀이 코드/** * @param storey : 현재 층 * @return 0층까지 가기위한 최소 횟수 */ int minValue = Integer.MAX_VALUE; //버튼 누르면 현재 층 + 10^n (n 은 정수) 로 이동. 결과값 minValue) return; if(s..
-
[프로그래머스] 이모티콘 할인행사 자바 (Level 2) DFS코딩테스트 2025. 5. 1. 12:57
문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/1503681. 문제 요약이모티콘 플러스 가입자수를 늘리고 이모티콘 판매액을 최대한으로 달성할 수 있는이모티콘별 최적의 할인율을 구하여 산출된 [이모티콘 플러스 가입자수, 이모티콘 판매액]을 구하시오.할인율은 10%단위로 10% ~ 40% 까지 적용할 수 있음2. 핵심 아이디어DFS로 할인율 조합 4ⁿ개 생성 (n: 이모티콘 개수)각 조합마다 사용자 반응을 시뮬레이션가입자 수, 판매액 기준으로 최적 결과 저장3. 풀이 코드/** * 할인률 : 10~ 40% (단위:10 %) * @param users [구매기준%, 가격기준] * @param emoticons [이모티콘..
-
[프로그래머스] 택배 배달과 수거하기(Level 2) greedy코딩테스트 2025. 4. 30. 16:29
문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/1503691. 문제 요약트럭 cap만큼 운반할 수 있음.n은 배달할 집의 수트럭은 한번에 cap만큼 배달하고 수거 가능.가장 먼 집 부터 처리하면서 최소 이동거리를 계산한다.2. 핵심 아이디어index를 기반으로 뒤에서 앞으로 내려오면서 계산3. 풀이 코드public long solution(int cap, int n, int[] deliveries, int[] pickups) { long answer = 0; // 가장 먼 거리부터 이동거리를 더하기 위해 greedy방식. int remainD = 0, remainP = 0; for(in..
-
[프로그래머스] 시소 짝꿍(Level 2) HashMap코딩테스트 2025. 4. 28. 22:28
문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/1529961. 문제 요약중심으로부터 2, 3, 4m 위치에 좌석이 있는 시소에 주어진 몸무게들을 가진 인원들의 조합몸무게 조합에서 존재하는 시소쌍의 갯수 구하기.시소쌍 : 시소가 평형이 되게하는 두 값의 쌍.2. 핵심 아이디어몸무게 등장 수를 세어둔다 (ex: 100이 2명, 180이 1명, 360이 1명, 270이 1명)자기 자신끼리 조합하는 경우 (nC2)특정 거리비율이 성립하는 다른 몸무게와 조합하는 경우 (2:3, 2:4, 3:4)3. 풀이 코드public long hashMapSolution(int[] weights){ long answer = 0; Ma..
-
[프로그래머스] 뒤에 있는 큰 수 찾기(Level 2) 스택 Stack코딩테스트 2025. 4. 28. 10:07
문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/1545391. 문제 요약주어진 배열 numbers에서 각 값의 뒷쪽 값 중 큰 값을 찾아 새로운 배열에 담아서 반환한다.해당 값보다 큰 값이 없을 경우 -1을 넣는다.2. 핵심 아이디어greedy 방식으로 탐색하게 되면 시간복잡도 이슈로 오답.Stack에 찾아야 할 index를 담아두고 numbers의 값과 비교하여 반복작업 규모를 줄인다.3. 풀이 코드public int[] solution(int[] numbers) { int[] answer = new int[numbers.length]; Stack stack = new Stack(); Array..
-
[프로그래머스] 숫자 변환하기 자바 (Level 2) BFS코딩테스트 2025. 4. 28. 10:05
문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/1545381. 문제 요약x를 y로 변환하기까지 소요되는 최소 연산횟수 구하기불가능할 경우 -1연산은 x * 2 , x * 3, x + n 3가지 연산을 사용한다.2. 핵심 아이디어BFS방식 . y까지 가는 가장 짧은 경로Queue에 (값, 연산횟수) 저장3가지 연산을 수행해 큐에 추가y를 만나면 그때의 연산횟수 리턴 (y 조우 연산횟수 == 최소 연산횟수)방문체크(visited) 를 해서 같은 값을 중복 방문하지 않게 한다3. 풀이 코드public int solution(int x, int y, int n) { Queue queue = new LinkedList(); ..
-
[프로그래머스] 무인도 여행 자바 (Level 2) BFS코딩테스트 2025. 4. 26. 13:26
문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/1545401. 문제 요약바다 ‘X’로 구분된 지도에서 숫자로 연결된 섬을 구분한다구분된 섬들의 내부숫자의 합 구하기2. 핵심 아이디어BFS방식으로 ‘X’가 아닌 연결된 값들의 합 구하기3. 풀이 코드/** * * @param maps 'X' : 바다 1~9 : 무인도. * @return 각 연결된 숫자그룹(무인도)내의 합 오름차순 */ public int[] solution(String[] maps) { int rows = maps.length, cols = maps[0].length(); boolean[][] visited = ..
-
[프로그래머스] 호텔 대실 자바 (Level 2)코딩테스트 2025. 4. 25. 09:19
문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/1556511. 문제 요약주어진 예약을 모두 소화하는데 필요한 방 갯수의 최소값 구하기퇴실시간의 10분 후부터 다음 입실 가능.2. 핵심 아이디어모든 예약을 입실시간 기준 정렬최소 힙(우선순위 큐)을 사용하여 각 방의 다음 사용 가능 시간을 추적예약마다 사용 가능한 방이 있는지 확인가능: 해당 방 재사용 (방의 다음 사용 가능 시간 갱신)불가능: 새로운 방 추가3. 풀이 코드public int solution(String[][] book_time) { //1. 시작시간 기준으로 예약시간 정렬 Arrays.sort(book_time, (a, b) -> toMinute..