전체 글
-
[프로그래머스] 점찍기 자바 (level2)코딩테스트 2025. 5. 7. 09:42
링크: https://school.programmers.co.kr/learn/courses/30/lessons/140107문제k : 점 좌표의 기준 배수d : 원점과의 거리return : 찍을 수 있는 총 점의 갯수접근x 좌표를 0 ~ d까지 k 간격으로 반복각 x에 대해 y의 최대값을 구한다.직선의 길이^2 = x^2 + y^2 = d^2 → y = sqrt(d^2 - x^2)/** * * @param k 점 좌표의 기준 배수. * @param d 원점과의 거리 * @return 찍을 수 있는 점 갯수 */ public long solution(int k, int d) { long cnt = 0; for(int x = 0; x 알게된 점..
-
[프로그래머스] 디펜스게임 자바 (level2) (우선순위 큐 maxHeap)코딩테스트 2025. 5. 6. 13:14
문제링크: https://school.programmers.co.kr/learn/courses/30/lessons/142085문제주어진 내 병력수 n무적스킬 남은 횟수 k라운드 별 적 숫자 enemy주어진 병력과 무적스킬을 활용해서 버틸 수 있는 최대 라운드를 구하는 문제접근언제 무적스킬을 쓰는게 효율적인지 찾는 DFS방식으로 풀어보고자 함그러나 굳이 그럴 필요 없이 적의 수가 많은 라운드에 사용하는 것이 효율적임→ 내림차순 정렬한 우선순위 큐를 사용해서 무적스킬을 사용할 라운드를 정리/** * * @param n 내 병력 수 * @param k 무적스킬 남은 횟수 * @param enemy 매 라운드별 적의 숫자 * @return 게임 종료 라운드 */ ..
-
[프로그래머스] 테이블 해시 함수 (정렬 조건 + 누적 XOR)코딩테스트 2025. 5. 5. 15:58
링크:https://school.programmers.co.kr/learn/courses/30/lessons/147354문제int[][] data 를 col 번째 값을 기준으로 오름차순 정렬한다.만약 data[x][col] == data[x + n][col] 일 경우 data[x][1] > data[x + n][1] 비교하여 내림차순 정렬S_i를 i 번째 행의 튜플에 대해 각 컬럼의 값을 i 로 나눈 나머지들의 합으로 정의S_i 들을 누적하여 XOR연산한 결과값 구하기진행과정우선 data를 col번쨰 기준으로 오름차순 정렬하였다.Arrays.sort(data, (a, b) -> Integer.compare(a[col-1], b[col-1]));하지만 문제에선 a[col -1] == b[col-1] 일 경..
-
[프로그래머스] 마법의 엘리베이터 자바 (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..