981 words
5 minutes
입력 데이터 전처리

안녕하세요, 여러분! 오늘은 알고리즘 문제 해결에 있어 매우 중요한 주제인 ‘입력 데이터 전처리 기법’에 대해 알아보겠습니다. 알고리즘을 처음 접하시는 분들도 쉽게 이해하실 수 있도록 차근차근 설명해 드리겠습니다.

먼저, ‘입력 데이터 전처리’가 무엇인지 아시나요? 이는 주어진 원본 데이터를 알고리즘에서 효과적으로 사용할 수 있는 형태로 변환하는 과정을 말합니다. 마치 요리를 할 때 재료를 손질하는 것과 비슷하다고 생각하시면 됩니다. 잘 손질된 재료로 요리를 하면 더 맛있는 음식이 나오듯이, 잘 전처리된 데이터로 알고리즘을 실행하면 더 효율적인 결과를 얻을 수 있습니다.

그럼 이제 몇 가지 주요 전처리 기법에 대해 살펴보겠습니다.

  1. 문자열 분리하기

알고리즘 문제를 풀다 보면 한 줄에 여러 개의 데이터가 공백으로 구분되어 입력되는 경우가 많습니다. 이때 split() 메서드를 사용하면 편리합니다.

# 입력: 1 2 3 4 5
numbers = input().split()
# 결과: ['1', '2', '3', '4', '5']

이렇게 하면 문자열 리스트가 만들어집니다. 만약 정수 리스트가 필요하다면, map 함수를 활용할 수 있습니다.

numbers = list(map(int, input().split()))
# 결과: [1, 2, 3, 4, 5]
  1. 2차원 리스트 만들기

행렬이나 그래프 문제를 풀 때는 2차원 리스트가 필요한 경우가 많습니다. 이를 효과적으로 만드는 방법을 알아볼까요?

n = int(input())  # 행의 개수
matrix = [list(map(int, input().split())) for _ in range(n)]

이 코드는 n개의 행에 대해 각각 입력을 받아 2차원 리스트를 만듭니다. 리스트 컴프리헨션을 사용해 간결하게 표현할 수 있죠.

  1. 문자열을 문자 리스트로 변환하기

때로는 문자열의 각 문자를 개별적으로 다뤄야 할 때가 있습니다. 이럴 때는 문자열을 리스트로 변환하면 편리합니다.

s = input()  # 입력: HELLO
char_list = list(s)
# 결과: ['H', 'E', 'L', 'L', 'O']
  1. 불필요한 공백 제거하기

입력 데이터에 불필요한 공백이 있을 때는 strip() 메서드를 사용하면 좋습니다.

s = input().strip()  # 입력: "  Hello, World!  "
# 결과: "Hello, World!"
  1. 입력 값의 유효성 검사

마지막으로, 입력 값의 유효성을 검사하는 것도 중요한 전처리 과정입니다. 예를 들어, 숫자 범위를 체크하거나 문자열의 길이를 확인하는 등의 작업이 여기에 해당합니다.

n = int(input())
if not (1 <= n <= 100):
    print("입력 값이 범위를 벗어났습니다.")

이런 식으로 입력 값이 문제의 조건에 맞는지 확인하고, 그렇지 않다면 적절히 처리할 수 있습니다.

지금까지 살펴본 전처리 기법들은 알고리즘 문제 해결의 기초가 되는 중요한 스킬입니다. 이러한 기법들을 잘 활용하면, 복잡한 입력 데이터도 쉽게 다룰 수 있고, 결과적으로 문제 해결에 더 집중할 수 있게 됩니다.

여러분도 이제 문제를 풀 때마다 “어떤 전처리가 필요할까?”를 고민해보세요. 처음에는 어렵게 느껴질 수 있지만, 연습을 통해 점점 익숙해질 거예요. 그리고 이런 습관이 쌓이다 보면 어느새 여러분은 데이터를 자유자재로 다루는 실력자가 되어 있을 겁니다.

입력 데이터 전처리
https://kimjinwoo.me/posts/20240715-algorithm-2/
Author
Jinwoo Kim
Published at
2024-07-15