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

Python에서 map 함수와 딕셔너리를 활용해 문장의 ASCII 값 합계 계산하기

이번 글에서는 Python의 map 함수와 딕셔너리(dictionary)를 활용하여, 문장 내 각 단어의 ASCII 값 합계와 문장 전체의 총합을 구하는 방법을 알아봅니다.

문제 정의

예를 들어 다음과 같은 문장이 있다고 가정해 보겠습니다.

"hi people of the world"

각 단어의 ASCII 값 합계는 다음과 같습니다.

209 645 213 321 552

그리고 이 값들을 모두 더한 문장 전체의 총합은 1940입니다.

풀이 접근 방법

Python의 내장 함수 ord()는 문자 하나에 해당하는 ASCII(유니코드) 코드 값을 반환합니다. 여기에 map() 함수를 함께 사용하면 단어의 모든 문자에 대해 ASCII 값을 한 번에 추출할 수 있습니다.

  • map(ord, word): 단어의 각 문자를 순회하며 ASCII 값으로 변환
  • sum(map(ord, word)): 변환된 값들의 합계를 계산

문장을 공백 기준으로 분리한 뒤 각 단어마다 위 과정을 반복하고, 그 결과를 딕셔너리에 저장하면 각 단어별 합계를 손쉽게 관리할 수 있습니다.

예제 코드

sent = "hi people of the world"
words = sent.split(" ")

result = {}

# 각 단어별 ASCII 값의 합계 계산
for word in words:
    result[word] = sum(map(ord, word))

totalSum = 0

# 딕셔너리를 활용해 문장 내 단어들의 ASCII 합계 배열 생성
sumForSentence = [result[word] for word in words]

print('ASCII 값의 합계:')
print(' '.join(map(str, sumForSentence)))

print('문장 전체 ASCII 값의 총합: ', sum(sumForSentence))

실행 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

ASCII 값의 합계:
209 645 213 321 552
문장 전체 ASCII 값의 총합: 1940

정리

ord(), map(), sum() 세 가지 내장 함수만 조합하면 별도의 반복 연산 없이도 간결하게 문자열의 ASCII 값을 처리할 수 있습니다. 딕셔너리에 단어별 결과를 저장해 두면 특정 단어의 합계를 다시 조회할 때도 유용하며, 리스트 컴프리헨션을 활용해 문장 전체의 총합까지 깔끔하게 계산할 수 있습니다.