[level 2] JadenCase 문자열 만들기 - 12951
성능 요약
메모리: 10.3 MB, 시간: 0.01 ms
구분
코딩테스트 연습 > 연습문제
채점결과
정확성: 100.0
합계: 100.0 / 100.0
제출 일자
2024년 1월 6일 2:21:42
문제 설명
JadenCase란 모든 단어의 첫 문자가 대문자이고, 그 외의 알파벳은 소문자인 문자열입니다. 단, 첫 문자가 알파벳이 아닐 때에는 이어지는 알파벳은 소문자로 쓰면 됩니다. (첫 번째 입출력 예 참고)
문자열 s가 주어졌을 때, s를 JadenCase로 바꾼 문자열을 리턴하는 함수, solution을 완성해주세요.
제한 조건
- s는 길이 1 이상 200 이하인 문자열입니다.
- s는 알파벳과 숫자, 공백문자(" ")로 이루어져 있습니다.
- 숫자는 단어의 첫 문자로만 나옵니다.
- 숫자로만 이루어진 단어는 없습니다.
- 공백문자가 연속해서 나올 수 있습니다.
입출력 예
s | return |
---|---|
"3people unFollowed me" | "3people Unfollowed Me" |
"for the last week" | "For The Last Week" |
※ 공지 - 2022년 1월 14일 제한 조건과 테스트 케이스가 추가되었습니다.
풀이
def solution(s):
answer = ''
chars = [s for s in s.split(' ')]
for i in range(len(chars)):
if chars[i] and chars[i][0].isdigit():
if i + 1 < len(chars):
answer += chars[i].lower() + ' '
else:
answer += chars[i].lower()
else:
if chars[i]:
if i + 1 < len(chars):
answer += chars[i][0].upper() + chars[i][1:].lower() + ' '
else:
answer += chars[i][0].upper() + chars[i][1:].lower()
else:
if i + 1 == len(chars):
return answer
else:
answer += ' '
return answer
느낀점
우선 문자열 s의 길이가 200이기 때문에 시간복잡도 측면에서 큰 걱정이 없이 문제를 풀게됐다. 해당 문제에서는 lower()와 upper() 그리고 isdigit() 내장함수를 사용하면 문제가 금방 풀리는 것을 알 수 있다. 하지만 여기서 중요한 점은 (' ') 이와 같은 공백란이 연속되게 나타날 수 있다는 점이다. 따라서 인덱스 에러를 피하기 위해서 처음 if 문과 else 안에 if 문에서 ('')이 들어있는지 확인하고 들어있다면 문자열에 ' '으로 추가해야 하는것만 조심하면 문제를 어렵지 않게 맞출 수 있다고 생각한다.
출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges
'알고리즘' 카테고리의 다른 글
프로그래머스: 올바른 괄호 (1) | 2024.01.27 |
---|---|
프로그래머스: 최솟값 만들기 (0) | 2024.01.27 |
프로그래머스: 최댓값과 최솟값 (0) | 2024.01.27 |
프로그래머스: 가장 많이 받은 선물 (1) | 2024.01.26 |
프로그래머스: 붕대 감기 (1) | 2024.01.26 |