DevLog/Java 11

[코테] 괄호 판별 - Stack에서 ArrayDeque로 성능 개선하기

📌 문제 설명주어진 문자열이 올바른 괄호 문자열인지 판별하세요.올바른 괄호 문자열의 규칙:열림 괄호 (, {, [ 는 같은 종류의 닫힘 괄호 ), }, ] 로 닫혀야 합니다.괄호는 올바르게 중첩되어야 합니다.괄호 외의 문자가 주어지면 무시하지 않고 유효성 검사 대상이 아니라고 가정합니다. 🔢 입력 조건문자열 s (길이 1 ≤ |s| ≤ 10000)영문/숫자/공백/특수문자 등 임의 문자가 포함될 수 있음📤 출력 조건문자열이 올바른 괄호라면 true, 아니면 false🧪 예제 입력 / 출력입력: "abc(d[e]{f})xyz"출력: true // 추출: "([{}])" 형태와 동일입력: "(]"출력: false입력: "()[{}]"출력: true입력: "no brackets here..

DevLog/Java 2025.08.10

[코테] 정렬된 배열에서 두 수의 합이 K가 되는 쌍 찾기 - 투 포인터 활용

📌 문제 설명정렬되지 않은 정수 배열과 정수 K가 주어졌을 때,배열 내 어떤 두 수의 합이 K가 되는 쌍이 존재하는지 판단하는 프로그램을 작성하세요. 🔢 입력 조건배열의 길이는 2 이상 10,000 이하각 수는 -100,000 이상 100,000 이하의 정수K는 -200,000 이상 200,000 이하의 정수📤 출력 조건두 수의 합이 K인 쌍이 존재하면 true, 없으면 false를 출력🧪 예제 입력 / 출력arr = [1,2,4,7,10]K = 9result = true // 2 + 7 = 9arr = [1,2,3,4,5]K = 10result = false ✍️ 직접 구현한 코드 (초기 버전)import java.util.Scanner;public class main { public s..

DevLog/Java 2025.07.25

[코테] 두 배열의 공통 원소 찾기 - HashSet으로 중복 없이 정렬

📌 문제 설명두 개의 문자열 배열이 주어졌을 때,두 배열에 모두 존재하는 공통 원소를 찾아 중복 없이 오름차순 정렬된 배열로 반환하세요. 🔢 입력 조건각 배열의 길이는 1 이상 1000 이하입니다.각 배열에는 중복된 문자열이 포함될 수 있습니다.비교 시 대소문자는 구분합니다. ("Apple" ≠ "apple")📤 출력 조건공통 원소만 담은 String 배열을 출력합니다.중복 없이, 오름차순으로 정렬된 결과여야 합니다.🧪 예제 입력 / 출력arr1 = ["apple", "banana", "orange", "kiwi", "apple"] arr2 = ["grape", "banana", "orange", "melon", "banana"]result = ["banana", "orange"] ✍️ 직접 구현..

DevLog/Java 2025.07.20

[코테] 문자열 회문(Palindrome) 판별

📌 문제 설명주어진 문자열이 회문(Palindrome) 인지 확인하세요.회문이란 앞에서 읽으나 뒤에서 읽으나 같은 문자열을 의미합니다.단, 대소문자는 구분하지 않으며, 공백과 특수문자는 무시합니다. 🔢 입력 조건하나의 문자열 s가 주어집니다.문자열의 길이는 1 이상 1,000 이하입니다.📤 출력 조건true 또는 false 를 출력하세요.회문이면 true, 아니면 false 입니다.🧪 예제 입력 / 출력입력: "A man, a plan, a canal: Panama"출력: true입력: "race a car"출력: false입력: "Was it a car or a cat I saw?"출력: true ✍️ 직접 구현한 코드 (초기 버전)우선 문자열을 정제하고, 역순으로 뒤집은 결과와 비교하는 ..

DevLog/Java 2025.07.20

IllegalStateException - 지금 상태에서 호출하면 안 되는 메서드

✅ java.lang.IllegalStateExceptionException in thread "main" java.lang.IllegalStateException: Already initialized at com.example.Initializer.init(Initializer.java:18) 🔍 자주 발생하는 케이스1. 이미 초기화된 상태에서 다시 초기화 시도public class Initializer { private boolean initialized = false; public void init() { if (initialized) { throw new IllegalStateException("이미 초기화되었습니다."); } initia..

DevLog/Java 2025.05.18

java.lang.IllegalArgumentException - 메서드 호출이 잘못됐다는 신호

✅ java.lang.IllegalArgumentExceptionException in thread "main" java.lang.IllegalArgumentException: Width must be greater than zero at com.example.ImageResizer.resize(ImageResizer.java:42) 🔍 자주 발생하는 케이스1. 유효하지 않은 값이 들어왔을 때public void setAge(int age) { if (age 메서드에 유효하지 않은 값이 전달되었을 때 사용자가 명시적으로 던짐2. 외부 라이브러리 내부에서 발생Files.readString(Path.of("")); // IllegalArgumentException비어있는 경로나 null 값을 넘..

DevLog/Java 2025.05.18

java.util.ConcurrentModificationException - 반복문에서 리스트 수정하면 생기는 문제

✅ java.util.ConcurrentModificationExceptionException in thread "main" java.util.ConcurrentModificationException at java.base/java.util.ArrayList$Itr.checkForComodification(ArrayList.java:1043) at java.base/java.util.ArrayList$Itr.next(ArrayList.java:997) 🔍 자주 발생하는 케이스1. for-each 문에서 remove 시도List list = new ArrayList(); list.add("a"); list.add("b"); for (String item : list) { if (item.equ..

DevLog/Java 2025.05.18

java.lang.NullPointerException - 왜 null인지 모를 때

✅ java.lang.NullPointerExceptionException in thread "main" java.lang.NullPointerException at com.example.MyClass.myMethod(MyClass.java:10) 🔍 자주 발생하는 케이스 1. Spring에서 주입 실패@Autowired private SomeService service; service.doSomething(); // 여기서 NullPointerException원인: 해당 빈이 스프링 컨텍스트에 등록되지 않았거나, 컴포넌트 스캔 대상이 아님해결: @Component, @Service, @Repository 등 어노테이션 누락 여부 확인2. Map에서 존재한다고 착각한 keyMap userMap = n..

DevLog/Java 2025.05.18

MySQL 오류: Illegal mix of collations for operation 'like'

Illegal mix of collations (utf8mb4_0900_ai_ci,COERCIBLE) and (utf8mb4_unicode_ci,COERCIBLE) for operation 'like' Illegal mix of collations for operation 오류는MySQL에서 문자열 비교 연산(LIKE, =, IN)을 수행할 때, 비교에 사용되는 문자열들의 collation이 서로 다를 경우 발생한다. 그중에서 'LIKE' 오류는 LIKE 비교 연산에서 좌변과 우변의 collation이 일치하지 않거나, 우변 내부의 구성 요소들끼리 collation이 달라 발생한다. ✅ Character Set과 Collation 개념 정리1. Character Set (문자 집합)데이터를 어떤 문자..

DevLog/Java 2025.05.01

Gradle 의존성 정리

implementation, api, compileOnly, runtimeOnly 차이?이름만 보고 쓰기엔 헷갈려서 정리해두기로 했다. ✅ 기본 개념 요약키워드상황컴파일 시 포함실행 시 포함다른 모듈에서 사용implementation내부 구현용. 외부에는 노출하지 않음✅✅❌api외부에 노출되는 라이브러리✅✅✅compileOnly컴파일만 필요. 실행 시엔 없어야 함✅❌❌runtimeOnly런타임에만 필요. 컴파일엔 불필요❌✅❌ 📌 키워드별 설명과 예시1. implementationimplementation 'org.springframework.boot:spring-boot-starter-web' 대부분의 의존성은 이걸로 선언하면 충분하다.implementation은 다른 모듈에서 이 모듈을 의존하더라도..

DevLog/Java 2025.04.25