"꾸준하고 완벽한 한 걸음"

2025/02 57

Java에서 Primitive Array 정렬에 Dual-Pivot Quicksort를 선택한 이유

목차원시 배열과 객체 배열의 차이Dual-Pivot Quicksort란?원시 배열에서 Dual-Pivot Quicksort를 사용하는 이유정리Java는 원시 배열(primitive array)을 정렬할 때 Arrays.sort() 메서드를 사용하며, 이 메서드는 내부적으로 Dual-Pivot Quicksort를 사용합니다. 반면, 객체 배열(Object array)의 경우 Timsort를 사용합니다.이 글에서는 원시 배열 정렬에 Dual-Pivot Quicksort가 Timsort보다 선호되는 이유를 원시 배열의 구조와 알고리즘의 특성을 중심으로 설명하겠습니다.1️⃣ 원시 배열과 객체 배열의 차이Java에서 원시 배열과 객체 배열은 메모리 구조와 접근 방식에 차이가 있습니다.원시 배열데이터가 연속된 메모..

[백준 11434] Ampelmännchen [Java]

문제https://www.acmicpc.net/problem/11434 풀이주어진 분쟁의 수와 주어진 분쟁에 대해 어떤 것을 선택하는게 더 좋은지에 행복도가 주어질 때, 최대 행복도를 구하는 문제다.문제의 조건대로 구현해주고, 최댓값을 계산하면 된다. int res = 0; while (N-- > 0) { st = new StringTokenizer(br.readLine()); final int a = Integer.parseInt(st.nextToken()); final int b = Integer.parseInt(st.nextToken()); final i..

[백준 11368] A Serious Reading Problem [Java]

문제https://www.acmicpc.net/problem/11368 풀이존재하는 책 제목에 대한 정보가 주어지면 총 몇 권이 있는지 계산하는 문제다.문제 속 예제를 통해 알 수 있듯, 주어지는 정보 C, W, L, P에 대해 순서대로 제곱 하면 책의 수를 알 수 있다.// Solveint cnt = num[0];for (int i = 1; i 소스코드https://github.com/rogi-rogi/problem-solving/blob/main/baekjoon-online-judge/practice/11368.java

[백준 11312] 삼각 무늬 - 2 [Java]

문제https://www.acmicpc.net/problem/11312 풀이한 변의 길이가 A, B인 삼각형이 있을 때 ( B ≤ A) B로 A를 완전히 덮기 위해 필요한 수를 출력하면 된다.이는 $(A / B)^2$이 된다. while (T-- > 0) { long[] info = Arrays.stream(br.readLine().split(" ")).mapToLong(Long::parseLong).toArray(); final long a = info[0]; final long b = info[1]; // Solve sb.append(a / b * a / b).append("\\n"); ..

[Java] Java switch의 문자열 비교, 내부 원리와 성능 분석

목차switch에서 문자열을 비교하는 방법switch의 내부 동작 원리switch vs if-elseswitch 사용 시 주의사항정리예제 코드Java 7부터는 switch문에서 문자열(String)을 비교할 수 있습니다. 기존의 if-else에서 equals()를 사용하는 방식보다 더욱 깔끔하게 문자열을 비교할 수 있습니다.이번 글에서는 switch에서 문자열 비교 시, 내부적으로 어떻게 동작하는지 자세히 알아보겠습니다.1️⃣ switch에서 문자열을 비교하는 방법Java 7 이후에는 정수나 열거형 뿐 아니라 문자열도 switch문의 조건으로 사용할 수 있습니다. 이는 switch의 값과 case의 문자열을 String.equals 를 사용한 것처럼 비교하기 때문입니다.The switch statemen..

[Java] List.of()로 생성된 불변 리스트와 컬렉션 초기화

목차UnsupportedOperationException이란?List.of()를 사용한 컬렉션 초기화컬렉션 생성자의 동작 원리정리예제 코드Java 9부터 도입된 List.of()는 불변 리스트(Immutable List)를 생성하는 편리한 메서드입니다. 하지만 이 불변 리스트에 직접 요소를 추가하려고 하면 UnsupportedOperationException이 발생합니다. 그런 반면 List.of()로 생성된 불변 리스트를 컬렉션의 초기값으로 전달 후 컬렉션에 요소를 추가하면 예외가 발생하지 않습니다.이번 글에서는 List.of()로 생성된 불변 리스트와, 이를 컬렉션의 생성자로 전달할 때 내부적으로 어떻게 동작하는지 살펴보겠습니다.1️⃣ UnsupportedOperationException이란?Java..

[Java] 람다 표현식의 반환 타입 추론

목차예시 - Arrays.sort()와 Comparator 람다 표현식함수형 인터페이스 설계와 람다 표현식람다 표현식의 반환 타입 추론 과정정리예제 코드Java 8부터 도입된 람다 표현식은 간결한 코드 작성과 함수형 프로그래밍 패러다임을 지원합니다. 람다 표현식을 사용할 때 가장 큰 장점 중 하나는 **타입 추론(type inference)**으로, 메서드의 매개변수나 반환 타입을 일일이 명시할 필요가 없다는 점입니다.이번 글에서는 Comparator 인터페이스 예시와 직접 함수형 인터페이스를 설계하고, 어떻게 람다 표현식이 반환 타입을 추론하는지 자세히 알아보겠습니다.1️⃣ 예시 - Arrays.sort()와 Comparator 람다 표현식Java에서는 배열을 정렬할 때, Arrays.sort() 메서..

개발자 유미 - 스프링 시큐리티 3. Security Config 인가 작업

스프링 시큐리티 3 : Security Config 인가 작업 개발자 유미 | 커뮤니티 개발자 유미 | 커뮤니티 www.devyummi.com 인가특정 경로 요청시 Controller보다 앞서 Filter에서 Spring Security가 다음과 같은 검증을 진행허용된 접근 경로인지(로그인을 통해)인가 된 사용자인지접근에 필요한 권한을 가지는지 검증 SecurityConfing.java 생성/config/SecurityConfing.javapackage com.cos.testsecurity.config;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;imp..