2025/05 6

조이스틱 - 프로그래머스(java)

📄조이스틱문제 정리 (프로그래머스 Lv2)# 🕹️ 조이스틱 (프로그래머스 Lv2)## 📌 문제 요약- 문자열을 A로 시작해서 주어진 이름으로 바꾸기 위해- 조이스틱으로 ▲▼ (알파벳 변경), ◀▶ (커서 이동)을 최소 횟수로 조작해야 함---## 💡 핵심 아이디어### 1. 알파벳 변경 (▲▼)- 각 문자마다 `A`에서 원하는 문자까지 가는 최소 횟수는: ```java Math.min(c - 'A', 'Z' - c + 1)2. 커서 이동 (◀▶)단순히 오른쪽으로만 가는 것보다,중간에 A가 연속된 구간이 있으면 꺾어서 가는 게 더 효율적일 수 있음i * 2 + len - next // 오른쪽 갔다가 왼쪽으로 꺾기(len - next) * 2 + i // 왼쪽 갔다가 오른쪽으..

[코딩테스트] 2025.05.05

파일명 정렬 - 프로그래머스 - java

생각 정리무슨 자료구조? -> 딱히 사용 안하는 듯?무슨 구현?head, number, tail어떻게 나누지?함정은?주의 점은?이미지 필기 내용을 확인했고, 순서대로 정리된 로직을 확인해 보았습니다.당신이 적은 내용을 기준으로 논리 순서와 구현 방향이 적절한지 평가 + 보완해드릴게요.✍️ 필기 요약: 당신이 적은 로직head 부분을 소문자로 변환같은 표현력의 head면…number를 오름차순으로 정렬각 자리 head에 관련 수록head + number + tail로 head 기준 정렬?✅ 분석: 순서 및 개념 정리아주 좋은 흐름입니다. 핵심 순서는 맞고, 약간 더 명확히 다듬으면 구현이 훨씬 쉬워져요.다음과 같이 정리해드릴게요:📌 전체 로직 정리 (정확한 논리 순서)1. 파일명 파싱문자열을 순회하며 h..

[코딩테스트] 2025.05.05

가장 큰 수 -프로그래머스 - java

🧠 [프로그래머스 Lv2] 가장 큰 수✅ 문제 개요목표: 주어진 숫자 배열을 이어붙여 만들 수 있는 가장 큰 수를 문자열로 반환입력: int[] numbers – 0 이상 양의 정수들출력: 가장 큰 수를 문자열 형태로 반환🔍 핵심 아이디어:커스텀 정렬정렬 기준숫자 a, b를 문자열로 변환한 후 a + b와 b + a 중 더 큰 쪽이 앞에 오도록 정렬예시: a = "3", b = "30"- "330" vs "303"→ "330"이 더 크므로 "3"이 앞에 와야 함🧩 풀이 순서int[] → String[] 으로 변환정렬 기준: (s1 + s2).compareTo(s2 + s1)을 내림차순으로정렬된 문자열들을 이어붙이기예외 처리: 결과가 "000..."인 경우 "0" 반환💻 자바 예시 코드import..

[코딩테스트] 2025.05.05

과일 장수 - 프로그래머스 - java

과일 장수🍎 문제: 과일 장수각 사과에는 1~k 점수 존재m개씩 포장 → 최소 점수 × m = 상자 가격최대 수익 구하기🧠 핵심 아이디어높은 점수 사과부터 m개씩 포장m개 단위로만 상자 구성 가능 → 일부 남는 사과는 버림🧪 알고리즘점수 오름차순 정렬끝에서 m개씩 묶어 최소값 × m 누적반복🧱 코드 스니펫 (Java)Arrays.sort(score);for (int i = score.length - m; i >= 0; i -= m) { total += score[i] * m;}import java.util.*;class Solution { public int solution(int k, int m, int[] score) { // 1. 점수를 오름차순 정렬 Ar..

[코딩테스트] 2025.05.05

K번째수 - 프로그래머스 (java)

K번째수훌륭해요! 이 문제는 흔히 “부분 배열 자르고 정렬해서 K번째 요소 찾기”라는 구조인데,이건 자르기(Slicing) + 정렬(Sorting) + 인덱싱(Access) 3단계로 분해됩니다.옵시디언에 정리한다면 다음과 같은 구조로 정리하는 걸 추천해요:🟩 K번째 수 (프로그래머스 Lv1)🧩 문제 요약array에서 i번째부터 j번째까지 자르고 정렬한 뒤,k번째 수를 구하라는 문제여러 개의 commands가 주어짐→ 각각 독립적으로 수행🧠 핵심 개념단계설명1. 배열 자르기Arrays.copyOfRange(array, i-1, j)2. 정렬Arrays.sort()3. k번째 수 반환sliced[k-1] (0-index 보정 필요)문제 포인트: 0-index 기반과 1-index 기반 혼용 주의각 co..

[코딩테스트] 2025.05.05

두 개 뽑아서 더하기 (프로그래머스 Lv1) - java

두 개 뽑아서 더하기좋아요, 이 문제도 자주 등장하는 조합 + 정렬 + 중복 제거 유형이라 옵시디언에 정리해두면 추후 "N개 중 2개 조합 문제"에서 매우 유용하게 재활용됩니다.🟩 두 개 뽑아서 더하기 (프로그래머스 Lv1)🧩 문제 요약주어진 정수 배열에서 서로 다른 인덱스 2개를 골라 더한 값들을중복 없이 오름차순 정렬하여 리턴🧠 핵심 개념단계설명1. 모든 2개의 조합 생성이중 for문 사용 (i, j=i+1)2. 중복 제거Set 사용3. 정렬 후 배열로 반환List → 정렬 → 배열로 변환🔄 조합은 순서가 중요하지 않으므로 i ☑ 합한 결과는 중복 가능성이 있으므로 Set 사용✅ 예시 코드 스니펫 (Java)Set set = new HashSet();for (int i = 0; i list ..

[코딩테스트] 2025.05.05