프로그래머스 연습문제를 풀다가 문자열의 각 단어 첫 글자를 대문자로 바꾸고, 나머지는 소문자로 바꾸는 문제를 접하게 됐다.
나는 무식한 방법으로 문제를 해결하였는데, 해결한 후 다른 사람들의 풀이를 보니 매우 간단하게 풀 수 있는 문제였다.
이 문제를 쉽게 풀기에 매우 유용한 메소드 두 개가 있었다.
바로 title()과 capitalize()이다.
두 개 모두 문자의 첫 글자를 대문자로, 나머지는 소문자로 반환해주는 메소드지만 이 둘에는 차이점이 있다.
capitalize()는 전체 문장의 제일 첫 번째 문자만을 대문자로,
title()은 각 단어마다 첫 번째 문자를 대문자로 반환시켜준다는 차이점이 있다.
s = "HELLO, WORLD!"
s.capitalize()
-> "Hello, world!"
s = "HELLO, WORLD!"
s.title()
-> "Hello, World!"
그래서 이 문제를 capitalize()를 이용해 풀어야 한다면 다음과 같은 방식으로 풀어야 한다.
def solution(s):
return ' '.join([word.capitalize() for word in s.split(" ")])
또 나를 어렵게 했던 제한사항 중 하나가 공백이 연속해서 나올 수 있다는 것이었다.
그래서 나는 이 문제를
def solution(s):
answer = ''
s = s.replace(" "," - ")
s = s.split()
for i in s:
answer += i[0].upper()
answer += i[1:].lower()
return answer.replace("-", " ")
이런 무식한..방법으로 풀었는데
s = ' '.join(((word[0].upper()) + word[1:].lower()) for word in s.split())
위의 함수를 이용하지 않고도 이렇게 간단하게 한 줄로 풀 수 있었다...
| [파이썬/python] enumerate() (원소와 인덱스 같이 출력) (0) | 2023.04.06 |
|---|---|
| [파이썬/python] itertools accumulate (누적합 라이브러리) (0) | 2023.04.06 |
| [파이썬/python] 유클리드 호제법으로 최대공약수&최소공배수 구하기 (+관련 라이브러리) (0) | 2023.03.27 |
| [파이썬/python] 진수 변환(2진수/8진수/16진수) (0) | 2023.03.26 |
| [파이썬/python] 정규표현식(regex) 공부 (0) | 2023.03.09 |