Java의 Map 컬렉션에 저장된 null 값을 특정 기본값으로 한 번에 대체하는 방법을 알아보겠습니다. 아래 예제는 스트림(Stream) API를 활용해 맵 내부의 모든 null 값을 손쉽게 치환하는 코드입니다. 예제 코드 import java.util.*; import java.util.stream.*; public class Demo{ public static <T, K> Map<K, T> null_vals(Map<K, T> my_map, T def_val){ my_ma
Java 프로그램의 진입점 역할을 하는 main 메서드에는 반드시 public 접근 제어자를 사용해야 합니다. 만약 private으로 바꾸면 어떤 일이 발생하는지, 두 가지 예제를 통해 직접 확인해 보겠습니다.1. main 메서드에 public을 사용한 경우public class Demo{ public static void main(String args[]){ System.out.println(This is a sample only); } }실행 결과This is a sample onlyDemo라는 클래
피보나치 수열은 각 항이 바로 앞 두 항의 합으로 이루어지는 수열로, 흥미로운 수학적 성질을 많이 가지고 있습니다. 그중 하나는 배수 관련 성질입니다. 이 글에서는 자바(Java)를 사용하여 피보나치 수열에서 특정 숫자의 n번째 배수가 나타나는 위치를 구하는 프로그램을 살펴보겠습니다.핵심 아이디어피보나치 수열에는 다음과 같은 중요한 성질이 있습니다. 어떤 수 k의 배수가 피보나치 수열에서 처음으로 등장하는 위치가 p라면, k의 n번째 배수는 정확히 n × p 번째 위치에 나타납니다. 예를 들어, 9의 배수 중 가장 작은 피보나치 수
주어진 범위 안에서 약수의 개수가 홀수인 숫자가 몇 개 있는지 구하려면, 해당 범위에 포함된 완전제곱수의 개수를 세면 됩니다. 일반적으로 약수는 서로 짝을 이루기 때문에 약수의 개수는 짝수이지만, 완전제곱수만이 제곱근과 같은 약수를 하나 더 가지므로 약수의 총 개수가 홀수가 됩니다. 예제 코드 import java.io.*; import java.util.*; import java.lang.*; public class Demo{ public static int square_count(int low_range
이 글에서는 X로 나누어 떨어지는 가장 작은 K자리 수를 구하는 방법을 Java 코드와 함께 살펴봅니다. 핵심 아이디어는 K자리 수 중 가장 작은 값인 10^(K-1)부터 시작하여, X로 나누어 떨어지지 않으면 그보다 큰 X의 배수 중 가장 작은 값으로 올림하는 것입니다.예제 코드import java.io.*; import java.lang.*; public class Demo{ public static double smallest_k(double x_val, double k_val){ double val =
처음 n개의 자연수(1부터 n까지)의 제곱합을 구하는 것은 수학과 프로그래밍에서 자주 등장하는 기본 문제입니다. 반복문으로 하나씩 더할 수도 있지만, 수학적 공식을 활용하면 훨씬 간결하고 효율적으로 계산할 수 있습니다. 아래는 Java로 이를 구현한 예제입니다. 제곱합 공식 처음 n개의 자연수의 제곱합은 다음 공식으로 한 번에 구할 수 있습니다. 1² + 2² + 3² + ... + n² = n(n+1)(2n+1) / 6 이 공식을 사용하면 반복문 없이도 곧바로 결과를 얻을 수 있어 성능 면에서 매우 유리합니다. 예제 코드 im
어떤 숫자의 모든 자릿수가 그 숫자를 나눌 수 있는지 확인하는 것은 코딩 테스트와 알고리즘 학습에서 자주 등장하는 문제입니다. 예를 들어 128은 각 자릿수인 1, 2, 8이 모두 128을 나눌 수 있으므로 조건을 만족하지만, 150은 자릿수 중에 0이 포함되어 있어 나눗셈 자체가 불가능합니다. 아래는 이를 확인하는 Java 코드입니다. 예제 코드 0){ int digit = temp % 10; if ((divisibility_check(val, digit)) == false)
어떤 수의 약수(제수) 개수가 짝수인지 홀수인지 판별하려면 제곱근을 활용하면 간단하게 해결할 수 있습니다. 아래에서 Java 코드 예제와 함께 자세히 살펴보겠습니다. 핵심 원리 약수의 개수는 대부분 짝수이지만, 완전제곱수(예: 1, 4, 9, 16, 25...)만 유일하게 홀수 개의 약수를 가집니다. 그 이유는 완전제곱수의 경우 제곱근 값 자체가 중복 없이 하나의 약수로 계산되기 때문입니다. 따라서 주어진 숫자가 완전제곱수인지만 확인하면 약수의 개수를 알아낼 수 있습니다. 코드 예제 import java.io.*; import ja
배열에 포함된 모든 숫자를 사용하여 3으로 나누어 떨어지는 수를 만들 수 있는지 확인하는 문제는 코딩 테스트에서 자주 등장하는 유형입니다. 이 글에서는 자바(Java)를 이용해 이 문제를 간단하게 해결하는 방법을 살펴보겠습니다.핵심 원리어떤 수가 3으로 나누어 떨어지려면 그 수의 각 자릿수의 합 역시 3으로 나누어 떨어져야 한다는 수학적 성질이 있습니다. 따라서 배열의 요소들을 하나씩 더하면서 3으로 나눈 나머지만 추적하면, 전체 숫자를 조합했을 때 3의 배수가 되는지 손쉽게 판별할 수 있습니다.예제 코드import java.io.
Java 8부터 도입된 Spliterator는 기존 Iterator에 분할(split) 기능을 추가한 인터페이스로, 병렬 스트림 처리에 특히 유용합니다. 이 글에서는 Iterator 객체를 Spliterator로 변환하는 방법을 예제 코드와 함께 살펴보겠습니다.핵심 메서드: Spliterators.spliteratorUnknownSize()java.util.Spliterators 클래스가 제공하는 spliteratorUnknownSize() 메서드를 사용하면 크기를 미리 알 수 없는 Iterator를 손쉽게 Spliterator로
정수에서 세트 비트(1로 설정된 비트)의 개수를 세는 것은 비트 조작 분야의 대표적인 기초 문제입니다. 아래는 Java를 사용해 정수의 세트 비트 개수를 계산하는 방법입니다. 예제 import java.io.*; public class Demo{ static int set_bits_count(int num){ int count = 0; while (num > 0){ n
문자열 처리 실력을 기르는 데 가장 기본적이면서도 유용한 연습 문제 중 하나가 바로 주어진 문장에서 각 문자가 몇 번 등장하는지 세는 것입니다. 아래는 이를 Java로 구현한 전체 코드입니다.예제import java.util.*; public class Demo{ static final int max_chars = 256; static void char_occurence(String my_str){ &nb
Java에서 HashMap을 사용하면 문자열에 포함된 각 문자가 몇 번 등장하는지 손쉽게 계산할 수 있습니다. 아래 예제 코드를 통해 구현 방법을 자세히 살펴보겠습니다. 예제 코드 import java.io.*; import java.util.*; public class Demo{ static void count_characters(String input_str){ HashMap<Character, Integer> my_map = new HashMap<Character, Integer>();
어떤 수의 팩토리얼(계승) 결과에서 뒤에 붙는 후행 0(trailing zeroes)의 개수를 구하는 것은 알고리즘 문제에서 자주 등장하는 주제입니다. 자바(Java)로 이를 계산하는 코드는 다음과 같습니다.예제 코드import java.io.*; public class Demo{ static int trailing_zero(int num){ int count = 0; for (int i = 5; num / i >= 1; i *= 5){ count += num / i;
자바에서 파일에 포함된 특정 텍스트나 문자열을 삭제하려면 BufferedReader와 BufferedWriter를 활용할 수 있습니다. 기본 원리는 원본 파일을 한 줄씩 읽어가면서 삭제 대상과 일치하는 줄은 건너뛰고, 나머지 내용을 임시 파일에 기록한 후 임시 파일의 이름을 원본 파일명으로 변경하는 방식입니다.예제 코드File input_file = new File(path to the .txt file); File temp_file = new File(path to the .txt file); BufferedReader my_re
입력 문자열에 1-4처럼 범위가 지정되어 있을 때, 이를 실제 숫자 목록으로 펼쳐야 하는 경우가 있습니다. 이럴 때는 문자열을 쉼표(,) 단위로 분리한 뒤, 각 항목을 하이픈(-) 기준으로 나누어 시작 값부터 끝 값까지 차례대로 숫자를 생성하면 됩니다. 아래는 이 과정을 구현한 Java 코드입니다. 예제 코드 public class Demo { public static void expand_range(String word) { StringBuilder my_sb = new StringBuilder();
주어진 숫자의 약수(인수)들 중 곱이 원래 수와 같아지도록 분해했을 때, 그 합이 최소가 되는 값을 구하는 문제는 소인수분해를 이용하면 간단하게 해결할 수 있습니다. 예를 들어 350은 2 × 5 × 5 × 7로 분해되며, 이때의 합은 2 + 5 + 5 + 7 = 19가 됩니다.핵심 원리는 다음과 같습니다. 두 개의 인수 a와 b에 대해 a × b ≥ a + b가 성립하는 경우(a, b가 모두 2 이상일 때), 더 작은 단위로 쪼갤수록 합이 줄어듭니다. 따라서 숫자를 가장 작은 단위인 소수까지 완전히 분해한 뒤 그 합을 구하면, 그
어떤 수의 고유한 소인수(Unique Prime Factors)란 해당 수를 나눌 수 있는 서로 다른 소수들을 의미합니다. 예를 들어 68은 2 × 2 × 17로 인수분해되므로 고유한 소인수는 2와 17이며, 이들의 곱은 34가 됩니다. 아래에서는 Java를 사용해 이 값을 구하는 방법을 살펴보겠습니다. 예제 코드 public class Demo { public static long prime_factors(int num){ long my_prod = 1; &
배열의 모든 요소를 곱한 뒤 이를 특정 숫자 n으로 나눈 나머지를 구해야 하는 경우가 종종 있습니다. 배열의 크기가 크거나 요소 값이 클 때 전체 곱을 먼저 계산하면 오버플로우가 발생할 수 있으므로, 각 단계마다 나머지 연산을 적용하는 것이 효율적입니다. 아래는 이를 구현한 Java 코드입니다.예제import java.util.*; import java.lang.*; public class Demo{ public static int remainder(int my_arr[], int arr_len, int va
주어진 숫자의 짝수 약수(even factor)의 합을 구하는 것은 코딩 테스트나 수학적 문제 해결에서 자주 등장하는 주제입니다. 이 글에서는 Java를 활용해 이를 효율적으로 계산하는 방법을 예제 코드와 함께 자세히 살펴보겠습니다. 예제 코드 import java.util.*; import java.lang.*; public class Demo{ public static int factor_sum(int num){ if (num % 2 != 0) return 0; int resul