https://app.codesignal.com/interview-practice/task/yXDg4rAk9ooEjLjdj/description
✔️문제 요약
- 문장에 띄어쓰기를 해주지 않았음
- 대문자를 기준으로 띄어쓰기를 해주도록 하자.
- 띄어쓰기가 끝나면, 모두 소문자로 돌려주기
✔️풀이 방법
1. 두번째 대문자부터 앞에 공백 추가해주기
- [1:]이라는 조건 추가해주기
2.문자열 전체를 소문자로 바꿔주기
-어떻게 풀어야할지 생각했다. 문자열이 하나로 되어있으면 isupper을 사용할 수 없다고 판단했고,
문자열을 쪼개서 요소요소로 만든 후, 리스트 내부 [1:]를 검사하면서 isupper=True이면, 그 앞에 ' ' 공백 요소를 추가해주고
이를 다시 하나로 합치고, 소문자로 바꿔주는 메커니즘을 생각하였고 이를 코드로 구현해보았다.
def solution(s):
res=list(s)
for i in reversed(range(1, len(res))):
element = res[i]
if element.isupper() == True:
res.insert(i,' ')
else:
pass
ans=(''.join(res).lower())
return ans
✔️고찰
-인덱스로 i를 가져다 쓸 수 없어서 element라는 변수를 추가해줘서 거기에 res[i]를 담아주었다.
-두번째 대문자부터 대문자란 조건을 만나면 공백을 추가해주고 싶었는데, 이 부분에서 공백을 추가해주면 인덱스가 하나씩 밀렸던 문제가 있었다. 이를 해결하기 위해 i+=1로 인덱스를 하나 밀어주고 싶었는데 어째서인지 적용이 되지 않아서 i를 뒤에서 부터 참조하는 reversed방식을 통해 문제를 해결할 수 있었다. i+=1은 더 알아보고 추가해놔야겠다.
-피드백 : element는 한번만 쓰니까, 줄일 수 있을 것 같고 , else는 안써도 될 것 같다
-다른 사람 풀이 1 (dart) : 소문자로 변환한 리스트를 만들어 원래 리스트와 다르면 앞에 공백을 붙히고, 마지막에 trim을 써서 공백을 제거한다.
-다른 사람 풀이 2 (dart) : 정규식 표현 사용
-다른 사람 풀이 3 (dart) : 캐릭터형이 없어서 아스키코드 활용해서 풀이
'코딩테스트 > 코딩테스트 Python' 카테고리의 다른 글
[CodeSiganl] missingNumber (Python) (0) | 2022.09.07 |
---|---|
[CodeSignal] singleNumber (Python) (0) | 2022.09.05 |
[CodeSignal] List Beautifier (Python) (0) | 2022.09.05 |
[CodeSignal] Mex Function (Python) (0) | 2022.09.05 |
[CodeSignal] Collections Truthness (Python) (0) | 2022.09.02 |
댓글