Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python zip() 함수를 활용한 새로운 문자 집합 매핑 방법

26개의 알파벳 문자 집합(a~z)이 있을 때, 이와 다른 순서로 배열된 새로운 문자 집합을 사용해 두 집합 사이의 대응 관계를 만드는 작업을 해보겠습니다. 즉, 새로운 문자 집합의 각 문자를 기존 알파벳과 매핑하여 입력된 문자열을 변환하는 것이 목표입니다.

예제

새로운 문자 집합: qwertyuiopasdfghjklzxcvbnm
입력: "wwmm"
출력: bbzy

위 예제에서 새로운 문자 집합은 키보드 배열 순서입니다. 'q'가 'a'에 해당하고, 'w'가 'b'에 해당하는 식으로 순서대로 매핑됩니다. 따라서 입력 "wwmm"에서 'w'→'b', 'm'→'z'로 변환되어 출력 "bbzy"가 됩니다.

알고리즘

1단계: 새로운 문자 집합과 변환할 입력 문자열을 준비합니다.
2단계: 원본 알파벳 문자 집합('abcdefghijklmnopqrstuvwxyz')도 함께 정의합니다.
3단계: 딕셔너리를 생성합니다. Python의 zip() 함수를 사용하면 영어 알파벳 집합과 새로운 문자 집합을 손쉽게 매핑할 수 있습니다. zip()은 두 문자 집합의 각 문자를 순서대로 짝지어 줍니다.
4단계: 원본 문자열을 반복(iterate)하면서 각 문자를 매핑된 새로운 문자로 치환합니다.
5단계: 치환된 문자들을 공백 없이 하나의 문자열로 연결(join)하여 최종 결과를 만듭니다.

예제 코드

# 문자열을 새로운 문자 집합으로 변환하는 함수
def newString(cs, n):
    ori = 'abcdefghijklmnopqrstuvwxyz'
    newchar = dict(zip(cs, ori))
    newstr = [newchar[chr] for chr in n]
    print(''.join(newstr))

# 드라이버 프로그램
if __name__ == "__main__":
    newcharSet = 'qwertyuiopasdfghjklzxcvbnm'
    input_str = 'wwmn'
    newString(newcharSet, input_str)

코드 설명

dict(zip(cs, ori)) 부분이 핵심입니다. zip() 함수는 새로운 문자 집합(cs)과 원본 알파벳(ori)을 인덱스별로 묶어 튜플 쌍을 만들고, dict()가 이를 키-값 딕셔너리로 변환합니다. 그 결과 예를 들어 {'q': 'a', 'w': 'b', 'e': 'c', ...} 형태의 매핑 테이블이 완성됩니다.

이후 리스트 컴프리헨션(list comprehension)을 통해 입력 문자열의 각 문자를 딕셔너리에서 조회하여 새로운 문자로 바꾸고, join()으로 하나의 문자열로 합칩니다.

실행 결과

bbzy

입력 'wwmn'의 각 문자가 매핑 규칙에 따라 'b', 'b', 'z', 'y'로 변환되어 최종적으로 "bbzy"가 출력됩니다. 이처럼 zip() 함수를 활용하면 두 시퀀스 간의 대응 관계를 간결한 코드로 구현할 수 있으며, 암호화·복호화 로직이나 문자 치환 작업에 유용하게 응용할 수 있습니다.