본문 바로가기
정보모음

대문자 변환 방법과 소문자를 대문자로 바꾸는 최적화 방법

by 로우니오 2023. 9. 26.

1. 대문자 변환 방법

 

 

대문자 변환 방법에는 여러 가지가 있습니다. 가장 기본적인 방법은 문자열의 각 문자를 하나씩 확인하여 소문자인 경우에만 대문자로 변환하는 것입니다. 이를 위해 ASCII 코드를 사용할 수 있습니다.

 

```python

 

def convert_to_uppercase(string):

 

result = ""

 

for char in string:

 

if ord("a") <= ord(char) <= ord("z"):

 

char = chr(ord(char) - 32)

 

result += char

 

return result

 

```

 

코드는 입력받은 문자열을 문자 단위로 확인하고, 해당 문자가 소문자인 경우에만 ASCII 코드를 활용하여 대문자로 변환합니다. 문자열 내의 모든 문자에 대해 이 작업을 반복하고, 변환된 문자열을 최종 결과에 추가합니다. 이렇게 모든 문자에 대해 변환 작업을 수행한 뒤, 최종 결과를 반환합니다.

 

이 방법은 간단하고 이해하기 쉽지만, 문자열을 수정할 때마다 새로운 문자열을 생성해야 하므로 메모리 공간을 많이 사용하게 됩니다. 따라서 대량의 문자열을 변환해야 할 때는 성능이 저하될 수 있습니다.

 

최적화된 방법은 문자열을 변경 가능한 리스트로 처리하는 것입니다. 리스트는 수정이 가능하기 때문에 문자열을 직접 변경할 수 있습니다. 이를 이용해 대문자로 변환한 문자열을 생성하는 대신, 원본 문자열을 직접 수정하는 방법입니다.

 

```python

 

def convert_to_uppercase(string):

 

string_list = list(string)

 

for i in range(len(string_list)):

 

if "a" <= string_list[i] <= "z":

 

string_list[i] = chr(ord(string_list[i]) - 32)

 

return "".join(string_list)

 

```

 

이 코드에서는 문자열을 리스트로 변환한 후, 각 문자에 대해 변환이 이루어집니다. 변경 가능한 리스트를 사용하기 때문에 문자열을 직접 수정하여 메모리를 보다 효율적으로 사용할 수 있습니다. 마지막으로 리스트를 다시 문자열로 변환하여 반환합니다.

 

이렇게 최적화된 방법은 원본 문자열을 직접 수정하기 때문에 메모리 사용량을 줄일 수 있습니다. 따라서 대량의 문자열을 변환해야 할 때 유용한 방법입니다.

 

 

 

2. 소문자를 대문자로 바꾸는 최적화 방법

 

 

 

소문자를 대문자로 바꾸는 가장 기본적인 방법은 각 문자마다 아스키 코드를 이용하는 것입니다. 소문자 알파벳은 97부터 122까지의 아스키 코드 값을 갖고 있고, 대문자 알파벳은 65부터 90까지의 값입니다. 이를 이용하여 소문자를 대문자로 변환할 수 있습니다.

 

이 방법은 간단하고 직관적이지만, 문자 하나마다 변환을 수행하기 때문에 시간 복잡도가 O(n)이고, 대량의 데이터를 처리할 때는 성능적으로 효율적이지 않을 수 있습니다.

 

따라서 최적화된 방법으로는 대문자 ASCII 코드 값에 소문자와 대문자의 아스키 코드 값의 차이(32)를 더해주는 방법입니다. 이렇게 하면 소문자 문자열 전체를 한 번에 대문자로 변환할 수 있습니다.

 

예를 들어, 문자열 "hello"를 대문자로 변환하려면 아스키 코드 값에 32를 더해주는 방식을 사용하면 됩니다. 즉, "h"는 104이므로 104 + 32 = 136이 되어 대문자 "H"로 변환됩니다. 마찬가지로 "e"는 101이므로 101 + 32 = 133이 되어 대문자 "E"로 변환됩니다. 이런 식으로 모든 문자를 변환하면 문자열 "hello"는 대문자로 변환된 "HELLO" 문자열이 됩니다.

 

이 방법은 문자열의 길이가 n일 때, 시간 복잡도가 O(n)으로 기본 방법보다 훨씬 효율적입니다. 따라서 대량의 데이터를 처리해야 할 경우에는 이 방법을 사용하는 것이 좋습니다.

 

 

 

댓글