Koala - 9기/기초 알고리즘 스터디

[백준/4458] 첫 글자를 대문자로

sebinChu 2023. 1. 1. 22:16

https://www.acmicpc.net/problem/4458

 

4458번: 첫 글자를 대문자로

첫째 줄에 줄의 수 N이 주어진다. 다음 N개의 줄에는 문장이 주어진다. 각 문장에 들어있는 글자의 수는 30을 넘지 않는다. 모든 줄의 첫 번째 글자는 알파벳이다.

www.acmicpc.net

 

🔎 두 가지 방법

이 문제를 구상할 때 문자열은 불변 데이터이므로, 새로 정의해줘야 하는 번거로움을 피하기 위해 list로 작성했습니다. 하지만 (이 문제에 한해서) 둘의 속도 차이는 별로 크지 않았고, 두 방법을 적재적소에 사용하기 위해 다 익혀놓는 것이 좋을 거라 생각해서 두 가지 모두 구현해보았습니다.

💻 list를 활용한 구현

n = int(input())
for _ in range(n):
    s = list(input())
    s[0] = s[0].upper()
    print(''.join(s))

파이썬의 join 함수를 활용하여 리스트를 문자열로 변경해주었습니다. join 함수는 문자열을 결합하는 함수로, 문자열을 구분하는 split 함수와 반대의 역할을 한다고 이해했습니다. "".join(리스트) 형식으로 사용합니다.

💻 문자열을 활용한 구현

n = int(input())

for _ in range(n):
    s = input()
    new = s[0].upper()+s[1:]
    print(new)

첫번째 글자에만 upper 함수(소문자->대문자)를 적용하고 나머지 인덱스를 그대로 붙여서 문자열을 새로 정의했습니다.

 

📝 막간을 이용한 list(mutable)와 문자열(immutable)의 비교

1. 리스트 는 mutable 문자열은 immutable입니다. immutable data는 원소를 추가하는 것은 가능하지만, 인덱스를 통해 변경하는 것은 불가능하기 때문에, 새로 정의를 해서 사용해야 합니다. 불변 데이터는 메모리 내용 자체를 수정할 수 없기 때문입니다. 이렇게 불변 자료형은 매번 값을 새로 정의해서 사용해야 하기 때문에 성능에서 불리한 면이 있습니다. 단점만 있는 것은 아닙니다. 장점으로는 변경이 불가능하기 때문에 안정성을 보장합니다.