Java 15

조이스틱 - 프로그래머스(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

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

HashMap 동작원리

HashMap 동작원리에 대해 설명하시오Java의 HashMap은 키-값 쌍을 저장하는 자료 구조로, 해싱 알고리즘을 사용하여 데이터를 효율적으로 저장하고 검색합니다. HashMap의 동작 원리를 이해하기 위해서는 hashCode, equals, 그리고 체이닝(chaining) 개념을 알아야 합니다. 다음은 HashMap의 주요 동작 원리입니다:1. 해싱과 버킷해싱: HashMap은 키의 hashCode 값을 사용하여 데이터를 저장할 위치를 결정합니다. hashCode 메서드는 객체의 해시 코드를 반환하며, 이 값은 객체를 고유하게 식별하는 데 사용됩니다.버킷: HashMap은 내부적으로 배열(버킷 배열)을 사용하여 데이터를 저장합니다. 각 버킷은 여러 엔트리(키-값 쌍)를 저장할 수 있습니다.2. ha..

Java 예외처리

Java 예외처리Java 예외 처리는 프로그램 실행 중 발생할 수 있는 오류나 예기치 않은 상황에 대비하기 위해 코드를 작성하는 것을 의미합니다. 예외 처리는 프로그램의 안정성을 높이고, 오류 발생 시 적절한 대처를 가능하게 합니다. 주요 개념과 키워드를 중심으로 Java 예외 처리에 대해 설명하겠습니다.1. 오류와 예외오류 (Error): 시스템 수준에서 발생하는 심각한 문제로, 일반적으로 프로그램이 복구할 수 없습니다. 예를 들어, OutOfMemoryError나 StackOverflowError 등이 있습니다.예외 (Exception): 프로그램 실행 중 발생할 수 있는 문제로, 프로그램이 이를 처리하고 복구할 수 있습니다. 예외는 다시 두 가지로 나뉩니다:Checked Exception: 컴파일러..

Thread

Thread 사용법 및 코드예제Thread를 사용하는 주요 방법과 코드 예제는 다음과 같습니다:Thread 클래스 상속:class MyThread extends Thread { public void run() { // 스레드에서 실행할 코드 }}MyThread t = new MyThread();t.start();Runnable 인터페이스 구현 (더 많이 사용됨):class MyRunnable implements Runnable { public void run() { // 스레드에서 실행할 코드 }}Thread t = new Thread(new MyRunnable());t.start();람다식을 사용한 Runnable 구현:Thread t = new Threa..

Java Collection

Java Collection Framework는 데이터를 저장하고 처리하기 위한 클래스와 인터페이스의 집합입니다. 주요 인터페이스와 구현체, 그리고 동기화 관련 특징은 다음과 같습니다:주요 인터페이스:List: 순서가 있는 컬렉션. 중복 요소 허용.Set: 순서가 없는 컬렉션. 중복 요소 불허.Map: 키-값 쌍으로 이루어진 컬렉션. 키는 중복 불가.구현 클래스:List: ArrayList, LinkedList, VectorSet: HashSet, TreeSet, LinkedHashSetMap: HashMap, TreeMap, LinkedHashMap, HashtableSynchronized Collections:기본 컬렉션들은 스레드 안전하지 않습니다.Collections 클래스의 정적 메서드를 사용하..

Java Collection

Java Collection Framework는 데이터 구조 및 알고리즘을 제공하여 데이터를 효율적으로 관리하고 조작할 수 있게 합니다. 이 프레임워크에는 다양한 인터페이스와 클래스를 포함하며, 주로 List, Set, Map 인터페이스를 중심으로 구성됩니다. 각 인터페이스는 고유한 특성과 기능을 제공하며, 이들을 통해 데이터를 저장하고 조작할 수 있습니다. 또한, Java Collection Framework는 동기화된(Synchronized) 및 동시성(Concurrent)을 지원하여 멀티스레드 환경에서도 안전하게 사용할 수 있도록 합니다.1. List 인터페이스List 인터페이스는 순서가 있는 요소의 컬렉션을 정의합니다. 중복 요소를 허용하며, 인덱스를 통해 요소에 접근할 수 있습니다.주요 구현 클..

[프로그래머스] 약수의 합 - java

문제 설명 정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요. 문제 이해 및 전략 수립 1부터 for문 돌면서 그 수로 받은 수를 나눠서 약수를 찾은 다음 어레이 리스트에 담아 두고 나중에 다시 for문 돌리고 합을 구해서 return 한다. 이렇게 생각했었는데 굳이 이렇게는 안해도 될 듯 하고 answer 에다가 바로 i를 더하면 될 듯 하다. class Solution { public int solution(int n) { int answer = 0; for(int i = 1 ; i

[코딩테스트] 2024.04.06