[문제]
JadenCase란 모든 단어의 첫 문자가 대문자이고, 그 외의 알파벳은 소문자인 문자열입니다. 단, 첫 문자가 알파벳이 아닐 때에는 이어지는 알파벳은 소문자로 쓰면 됩니다. (첫 번째 입출력 예 참고)
문자열 s가 주어졌을 때, s를 JadenCase로 바꾼 문자열을 리턴하는 함수, solution을 완성해주세요.
제한 조건
- s는 길이 1 이상 200 이하인 문자열입니다.
- s는 알파벳과 숫자, 공백문자(" ")로 이루어져 있습니다.
- 숫자는 단어의 첫 문자로만 나옵니다.
- 숫자로만 이루어진 단어는 없습니다.
- 공백문자가 연속해서 나올 수 있습니다.
https://school.programmers.co.kr/learn/courses/30/lessons/12951
🎨 풀이
💡 전체 코드
def solution(s):
answer = ''
s = s.upper()
s = list(s)
answer += s[0]
for i in range(1,len(s)):
if s[i-1].isalpha() or s[i-1].isdigit():
answer += s[i].lower()
else :
answer += s[i]
return answer
> 핵심 : 앞에 있는 문자가 숫자거나 글자라면 소문자로, 아니라면 대문자로!
🍦 코드 설명 (실행 순서대로 나열)
#solution
answer = ''
s = s.upper()
s = list(s)
answer += s[0]
1. 변수를 초기화한다.
- answer : 정답
2. 먼저 s를 대문자로 바꿔준다.
3. s를 list로 바꾼다.
- (ex) s = "seoul ow" => s = ['s', 'e', 'o', 'u', 'l', ' ', 'o', 'w']
4. answer에 s[0]을 추가해준다.
- for문을 1부터 돌리기 위해 사전작업을 해둔 것이다.
#solution - 앞 글자가 뭔지 파악 후 answer에 알맞게 넣어주기
for i in range(1,len(s)):
if s[i-1].isalpha() or s[i-1].isdigit():
answer += s[i].lower()
else :
answer += s[i]
return answer
5. 만약 앞에 있는 문자가 숫자거나 글자라면, s[i]를 소문자로 바꾼 후 answer에 넣어준다.
6. 만약 그렇지 않다면, answer에 s[i]를 그대로 넣어준다. (대문자)
7. answer을 return 해준다.
끝~
⭐ 느낀점
> 이거는 그 힌트를 살짝 얻어서 풀었다. 그 전까지는 계속~~~~ 진짜 오래전부터 도전했던 문제인데,, 자꾸 단어를 바꿔준 후 replace로 넣는 형태로 시도해서 영 뜯어고치기가 힘들더라. 이렇게 푸니까 단번에 푸는 건데 ㅎ_ㅎ.. 그래도 잘 풀어서 기분은 아주 좋았다! 통과~~~~~~!
'알고리즘 공부 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 / Level 2] 카펫 (파이썬) (0) | 2022.09.23 |
---|---|
[프로그래머스 / Level 2] 기능개발 (파이썬) (0) | 2022.09.22 |
[프로그래머스 / Level 2] 피보나치 수 (파이썬) (0) | 2022.09.20 |
[프로그래머스 / Level 2] 숫자의 표현 (파이썬) (0) | 2022.09.19 |
[프로그래머스 / Level 2] 다음 큰 숫자 (파이썬) (0) | 2022.09.18 |