프로그래밍을 하다 보면 숫자를 한 진법에서 다른 진법으로 변환해야 하는 경우가 자주 발생합니다. 예를 들어 8진수(Octal)로 표현된 값을 2진수(Binary), 10진수(Decimal), 16진수(Hexadecimal) 등으로 바꿔야 할 때가 그렇습니다. 다행히 Java에서는 Integer 클래스가 제공하는 메서드만 활용하면 별도의 변환 로직을 직접 구현하지 않고도 간단하게 처리할 수 있습니다.핵심 원리Java의 Integer.parseInt(String num, int source) 메서드는 문자열 형태의 숫자를 지정된 진법(
Java에서 문자열 분할 및 결합하는 방법Java에서 하나의 문자열을 여러 부분으로 나누려면 split() 메서드를 사용하고, 여러 문자열을 하나로 합치려면 join() 메서드를 사용합니다. 아래 예제를 통해 두 메서드의 실제 사용법을 살펴보겠습니다.예제 코드public class Demo{ public static void main(String args[]){ String my_str = This_is_a_
Java에서는 java.util.Random 클래스를 활용하면 지정한 범위 내에서 손쉽게 난수를 생성할 수 있습니다. 이번 글에서는 생성한 난수들을 ArrayList에 저장하고 출력하는 전체 과정을 예제 코드와 함께 살펴보겠습니다. 핵심 개념: Random 클래스와 nextInt() Random 클래스가 제공하는 nextInt(bound) 메서드는 0(포함)부터 bound(미포함) 사이의 정수 난수를 반환합니다. 예를 들어 nextInt(1000)을 호출하면 0부터 999 사이의 값이 무작위로 생성됩니다. 따라서 원하는 상한값을
두 개의 리스트를 서로 비교해 한쪽에만 존재하는 값을 찾아야 할 때가 있습니다. 예를 들어 데이터 동기화 전후의 목록을 대조하거나 변경된 항목만 추려야 하는 경우입니다. 이번 글에서는 Java를 이용해 두 리스트 사이의 누락된 값과 새로 추가된 값을 찾아내는 방법을 알아보겠습니다.예제 코드import java.util.*; public class Demo{ public static void main(String[] args){ List my_list_1 = new ArrayList(); List my_li
배열에 담긴 숫자들을 짝수와 홀수로 구분해 서로 다른 두 개의 배열에 나누어 담는 것은 자바에서 자주 만나게 되는 기본적인 문제입니다. 이 글에서는 Scanner를 사용해 사용자로부터 배열을 입력받고, 나머지 연산자(%)를 활용해 짝수와 홀수를 분류하는 방법을 예제 코드와 함께 살펴봅니다.예제 코드import java.util.Scanner; public class Demo { public static void main(String[] args) { int n, j = 0, k = 0; Scanner s
문장의 단어를 오름차순으로 정렬하는 것은 문자열 처리에서 자주 활용되는 기본적인 작업입니다. 이 글에서는 Java의 삽입 정렬(Insertion Sort) 알고리즘을 이용해 문장 내 단어들을 글자 수(길이) 기준으로 오름차순 정렬하는 방법을 예제 코드와 함께 살펴보겠습니다. 동작 원리 삽입 정렬은 두 번째 요소부터 시작하여, 현재 요소를 그 앞에 있는 이미 정렬된 요소들과 하나씩 비교하면서 자신의 올바른 위치에 삽입하는 방식으로 동작합니다. 이 예제에서는 단어 자체가 아니라 각 단어의 길이를 비교 기준으로 사용하므로, 길이가 짧은
주어진 문장에서 모든 중복 단어를 제거하려면 Java의 스트림(Stream) API를 활용하면 매우 간단하게 처리할 수 있습니다. 아래 예제 코드를 통해 그 방법을 살펴보겠습니다.예제 코드import java.util.Arrays; import java.util.stream.Collectors; public class Demo{ public static void main(String[] args){ String my_str = This is a is sample a sample only.; my_str =
리스트에 저장된 여러 문자열 중에서 입력된 패턴과 구조가 동일한 모든 단어를 찾고 싶다면, 각 문자열을 고유한 숫자 코드로 인코딩하여 비교하는 방법이 효과적입니다. 이 글에서는 HashMap을 활용해 문자열의 패턴을 추출하고, 이를 기반으로 유사 항목을 찾아내는 Java 프로그램을 소개합니다.패턴 매칭의 원리핵심 아이디어는 간단합니다. 문자열에서 처음 등장하는 순서대로 각 문자에 번호를 부여하면, 철자가 달라도 구조가 같은 문자열은 동일한 숫자 시퀀스를 갖게 됩니다.예를 들어 ddcc와 aabb는 서로 다른 알파벳으로 이루어져 있지
Java에서 배열이나 리스트에 담긴 값들 중 중복을 제거하고 고유한(distinct) 값만 출력하는 방법은 여러 가지가 있습니다. 그중 가장 기본적인 방법인 중첩 반복문을 활용한 구현 예제는 다음과 같습니다.예제 코드import java.io.*; public class Demo{ static void distinct_vals(int my_arr[], int len){ for (int i = 0; i < len; i++){ int j; for (j = 0; j &
Java 프로그래밍에서 나눗셈 연산의 몫(quotient)과 나머지(remainder)를 구하는 것은 매우 기본적이면서도 자주 사용되는 작업입니다. Java에서는 나눗셈 연산자(/)와 나머지 연산자(%, 모듈로 연산자)를 활용하여 손쉽게 계산할 수 있습니다.몫과 나머지 계산 예제 코드아래 예제 코드를 통해 두 정수의 몫과 나머지를 구하는 방법을 살펴보겠습니다.public class Demo { public static void main(String[] args) { int my_dividend = 11, my_
Java 8의 스트림(Stream) API는 기본적으로 인덱스 기반 반복을 직접 지원하지 않습니다. 하지만 AtomicInteger 클래스를 활용하면 스트림을 순회하면서 각 요소의 인덱스를 손쉽게 추적할 수 있습니다.예제 코드 + str).forEach(System.out::println); } }실행 결과 e코드 설명Demo라는 이름의 클래스가 선언되어 있으며, 그 안에 main 함수가 정의되어 있습니다. 이 메인 함수 내부에서는 다음과 같은 작업이 수행됩니다. 먼저 문자열 타입의 배열 my_array를 선언하고 초기화합
배열이나 리스트에 담긴 여러 값 중에서 최댓값과 최솟값이 어느 위치(인덱스)에 있는지 확인해야 하는 경우가 종종 있습니다. 이 글에서는 Java의 Collections 클래스와 선형 탐색(Linear Search)을 활용해 최댓값·최솟값과 그 위치를 함께 구하는 방법을 예제와 함께 살펴보겠습니다.예제 코드import java.util.*; import java.util.Arrays; import java.util.Collections; public class Demo{ public static int inde
개요자바(Java)에서는 java.net 패키지의 InetAddress 클래스를 활용하면 현재 시스템의 호스트 이름(Hostname)과 IP 주소를 간단하게 조회할 수 있습니다. 이 글에서는 실제 예제 코드와 함께 동작 원리를 자세히 살펴보겠습니다.예제 코드아래는 로컬 시스템의 호스트 이름과 IP 주소를 출력하는 자바 프로그램입니다.import java.net.*; public class Demo { public static void main(String[] args) { try { Ine
Java 프로그래밍에서 두 개의 문자열을 비교하여 한쪽에만 존재하는 고유한(uncommon) 문자들을 추출한 뒤, 이를 하나의 문자열로 연결해야 하는 경우가 있습니다. 아래 예제에서는 HashMap을 활용해 이 문제를 효율적으로 해결하는 방법을 살펴보겠습니다.예제 코드import java.util.*;import java.lang.*;import java.io.*;public class Demo{ public static String concat_str(String str_1, String str_2)
Java에서 문자열 안에 가장 먼저 반복해서 등장하는 문자를 찾으려면 HashSet을 활용하는 것이 가장 효율적입니다. HashSet은 중복 저장을 허용하지 않으며, 특정 요소의 존재 여부를 평균 O(1) 시간에 확인할 수 있기 때문에 이 문제에 매우 적합합니다. 예제 코드 import java.util.*; public class Demo{ static char repeat_first(char my_str[]){
Java에서 시퀀스(Sequence)에 담긴 여러 단어 중 두 번째로 많이 반복되는 단어를 찾아야 할 때는 HashMap으로 단어별 등장 횟수를 집계한 뒤, 최빈값과 그다음 값을 순차적으로 추적하는 방식이 효과적입니다. 아래 예제를 통해 구현 방법을 살펴보겠습니다. 예제 코드 import java.util.*; public class Demo{ static String second_repeated(Vector<String> my_seq){ HashMap <String, Integer> my
두 문자열에서 공통으로 나타나는 문자를 알파벳 순서대로 출력하려면 아래와 같은 코드를 사용할 수 있습니다.예제import java.io.*; import java.util.*; public class Demo{ static void common_chars(String str_1, String str_2){ int[] array_1 = new int[26]; int[] array_2 = new int[26]; &
자바(Java)에서 문자열에 포함된 문자들이 알파벳 순서대로 정렬되어 있는지 확인해야 하는 경우가 종종 있습니다. 예를 들어 입력값 검증이나 데이터 정렬 상태 점검 등에 활용할 수 있습니다. 아래 예제 코드를 통해 간단하게 구현하는 방법을 알아보겠습니다.예제 코드public class Demo { static boolean alphabetical_order(String my_str) { int str_len = my_str.length(); &nb
자바(Java)에서 클라이언트의 IP 주소를 확인하려면 java.net 패키지에 포함된 InetAddress 클래스를 활용하면 됩니다. 아래 예제 코드를 통해 실제 구현 방법을 살펴보겠습니다. 예제 코드 import java.net.*; import java.io.*; import java.util.*; import java.net.InetAddress; public class Demo{ public static void main(String args[]) throws Exception{ InetAddress
Java의 정적(Static) 변수란? 정적 변수는 static 키워드를 사용해 선언하는 변수로, 흔히 클래스 변수(class variable)라고도 부릅니다. 이 변수는 생성자 내부 또는 클래스 메서드 외부에 정의할 수 있으며, 한 번 선언되면 생성된 객체의 개수와 관계없이 해당 클래스의 모든 인스턴스가 하나의 값을 공유합니다. 변수에 static 키워드를 적용했을 때 실제로 어떻게 동작하는지 아래 예제를 통해 확인해 보겠습니다. 예제 코드 public class Demo{ String name;