https://school.programmers.co.kr/learn/courses/30/lessons/12951
문제풀이
- 정석
def solution(s):
answer = ''
answer += s[0].upper()
for i in range(1, len(s)):
temp = ''
if (s[i-1] == ' ') and (s[i] != " ") :
#앞글자가 공백이고, 현재 글자가 공백아니면 대문자화
temp = s[i].upper()
answer += temp
elif s[i-1] != ' ' and s[i].isupper():
# 단어 첫글자가 아닌데 대문자인 경우 : 소문자화
temp = s[i].lower()
answer += temp
else:
answer += s[i]
return answer
아주 정직한 풀이법이다.
모든 문자열을 소문자화 시키지 않은 채, 조건을 꼼꼼히 따져가면서 대문자화, 소문자화 시켰다.
입력 문자열은 200개 이하다보니 이런 정석적인 풀이가 통했다.
- 파이썬 내장함수 이용한 풀이법
' '.join([word.capitalize() for word in s.split(" ")])
코드를 살펴보겠다.
1. s를 " " 으로 나눈다.
2. 1번 결과로 for문을 실행한다.
3. for문 요소 하나씩 capitalize() 함수를 사용해, 맨앞만 대문자화시키고 나머지는 소문자화 시킨다.
4. 3번의 결과를 차곡차곡 리스트에 적재한다.
5. 4번의 리스트 요소들을 " " 공백 기준으로 합친다.
참으로 파이써닉한 코드다.
느낀 점
capitalize(), title() 함수를 발견했다.
- capitalize() : 캐피탈라이즈화한다. 즉 각 단어의 첫번째 글자만 대문자화 시키고 나머지는 소문자화한다.
- title() : 각 단어의 첫글자를 대문자화시킨다.
그리고 오늘 내 풀이는 정석풀이지만, 이것을 어떻게 짧고 효율적으로 바꿀 것인지도 살펴봐야할 거 같다.
알고리즘을 푸는 방법은
1. 우선 정석적인 풀이 방법 생각
2. 1번 개선
이라고 한다.
2번까지 나아가야 더 좋은 알고리즘 풀이법을 발견할 수 있을 거 같다.
'알고리즘 풀이' 카테고리의 다른 글
[항해99 TTL]백준 16401번 문제 (0) | 2025.04.14 |
---|---|
99클럽 코테 스터디 5일차 TIL : 누적합 문제 (0) | 2025.04.04 |