[java] 컬렉션 프레임워크를 활용한 알고리즘 문제 풀이

알고리즘 문제를 풀 때, 자료구조를 효율적으로 활용하는 것은 핵심입니다. Java에서는 컬렉션 프레임워크라는 강력한 도구를 제공하고 있으며, 이를 통해 알고리즘 문제를 더 효율적으로 해결할 수 있습니다. 이번 글에서는 컬렉션 프레임워크를 활용한 알고리즘 문제 풀이에 대해 알아보겠습니다.

List를 활용한 알고리즘 문제 풀이

List 인터페이스는 순서가 있는 데이터의 모음을 처리하는 데 사용됩니다. 알고리즘 문제에서는 주어진 데이터를 순서대로 처리하는 경우가 많습니다. 예를 들어, 주어진 배열에서 중복된 숫자를 찾거나, 주어진 문자열을 뒤집는 등의 문제를 풀 때 List를 사용할 수 있습니다.

import java.util.ArrayList;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        List<Integer> numbers = new ArrayList<>();
        numbers.add(1);
        numbers.add(2);
        numbers.add(3);
        
        for (int number : numbers) {
            System.out.println(number);
        }
    }
}

위의 코드는 List를 사용하여 주어진 숫자들을 출력하는 예시입니다. List에 숫자를 추가하고, for-each 문을 사용하여 숫자를 순서대로 출력합니다.

Map을 활용한 알고리즘 문제 풀이

Map 인터페이스는 키-값 쌍으로 이루어진 데이터를 처리하는 데 사용됩니다. 알고리즘 문제에서는 주어진 데이터의 특정 속성을 효율적으로 탐색하는 경우가 많습니다. 예를 들어, 주어진 배열에서 가장 많이 등장하는 숫자를 찾거나, 문자열에서 각 문자의 등장 횟수를 세는 등의 문제를 풀 때 Map을 사용할 수 있습니다.

import java.util.HashMap;
import java.util.Map;

public class Main {
    public static void main(String[] args) {
        Map<String, Integer> wordCount = new HashMap<>();
        String[] words = {"apple", "banana", "apple", "cherry", "banana"};
        
        for (String word : words) {
            wordCount.put(word, wordCount.getOrDefault(word, 0) + 1);
        }
        
        for (String word : wordCount.keySet()) {
            System.out.println(word + ": " + wordCount.get(word));
        }
    }
}

위의 코드는 Map을 사용하여 주어진 문자열 배열에서 각 단어의 등장 횟수를 세는 예시입니다. Map에 각 단어를 키로, 등장 횟수를 값으로 저장하고, for-each 문을 사용하여 각 단어와 등장 횟수를 출력합니다.

Set을 활용한 알고리즘 문제 풀이

Set 인터페이스는 중복을 허용하지 않는 데이터의 모음을 처리하는 데 사용됩니다. 알고리즘 문제에서는 중복을 제거하고 고유한 데이터를 처리하는 경우가 많습니다. 예를 들어, 주어진 배열에서 중복된 숫자를 제거하거나, 문자열에서 중복된 문자를 제거하는 등의 문제를 풀 때 Set을 사용할 수 있습니다.

import java.util.HashSet;
import java.util.Set;

public class Main {
    public static void main(String[] args) {
        Set<Integer> uniqueNumbers = new HashSet<>();
        int[] numbers = {1, 2, 3, 2, 4, 1, 5};
        
        for (int number : numbers) {
            uniqueNumbers.add(number);
        }
        
        for (int number : uniqueNumbers) {
            System.out.println(number);
        }
    }
}

위의 코드는 Set을 사용하여 주어진 숫자 배열에서 중복된 숫자를 제거하는 예시입니다. Set에 숫자를 추가하면 중복된 값은 자동으로 제거되고, for-each 문을 사용하여 고유한 숫자를 출력합니다.

결론

컬렉션 프레임워크는 Java에서 알고리즘 문제를 풀 때 효율적으로 데이터를 처리하기 위한 강력한 도구입니다. List, Map, Set 등의 인터페이스를 활용하면 순서, 속성, 중복 등의 다양한 요구사항에 대응할 수 있습니다. 자주 사용되는 컬렉션 프레임워크 메서드와 기능을 숙지하고, 알고리즘 문제 풀이에서 적절하게 활용할 수 있도록 노력해야 합니다.

참고: Java Collections Framework