https://programmers.co.kr/learn/courses/30/lessons/12930
코딩테스트 연습 - 이상한 문자 만들기
문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을
programmers.co.kr
프로그래머스에서 뭔가 예전에 비슷한 문제를 푼 것만 같았던 '이상한 문자 만들기'를 풀었다.
왜이렇게 푼 것만 같지.. 왜지..
첫번째 시도 - 테스트 케이스에서 왕창 틀림
def solution(s):
answer = []
strings = s.split("")
for i in range(len(strings)) :
strings[i] = list(strings[i])
for j in range(len(strings[i])) :
if j % 2 == 0 :
answer.append(strings[i][j].upper())
elif j % 2 == 1 :
answer.append(strings[i][j].lower())
return ''.join(answer)
공백을 처리할 때 ""와 " "는 아주 다르다는 걸 이제서야 알게 되었다... 처음에 공백 기준으로 단어들을 나눌 때 ""로 했더니 원하는 결과가 나오지 않았다. 또 answer에 넣어줄 때 공백이 몽땅 사라져서 난감했다.
두번째 시도 - 아예 틀림(숨은 그림찾기...?)
def solution(s):
answer = []
strings = s.split(" ")
for i in range(len(strings)) :
strings[i] = list(strings[i])
for j in range(len(strings[i])) :
if j % 2 == 0 :
answer.append(strings[i][j].upper())
elif j % 2 == 1 :
answer.append(strings[i][j].lower())
answer.append(" ")
return ''.join(answer)
그래서 ""를 " "로 수정한 후 첫번째 for문이 돌 때 마다 끝에 " "로 공백을 추가했다. 첫번째 시도에서 answer에 포함되어야 할 공백을 만들어 주기 위해서다.
이렇게 실행을 시켰는데 이상하게 예제부터 틀렸다고 나왔다.
실행한 결괏값 "TrY HeLlO WoRlD "이(가) 기댓값 "TrY HeLlO WoRlD"와(과) 다릅니다.
위와 같은 문구가 나와서 뭐가 틀렸지..? 하고 뚫어져라 보는데
같이 공부하는 코테의 신께서 뒤에 공백이 있다! 라고 말해줘서 겨우 잘못된 걸 알아차렸다..!
틀린 그림 찾기 마냥 한글자 한글자 비교하는데 마지막 공백을 눈치 못채고 있었던 것이다..!
내가 마지막에 첫번째 for문이 끝날 때 마다 공백을 추가해줬기 때문에 출력할 땐 마지막 공백을 제거해 줘야 했다.
세번째 시도 - 정답!
def solution(s):
answer = []
strings = s.split(" ")
for i in range(len(strings)) :
strings[i] = list(strings[i])
for j in range(len(strings[i])) :
if j % 2 == 0 :
answer.append(strings[i][j].upper())
elif j % 2 == 1 :
answer.append(strings[i][j].lower())
answer.append(" ")
return ''.join(answer[:-1])
join을 할 때 마지막 공백은 슬라이싱 해 줬고 무사히 통과할 수 있었다!
GitHub - YOOHYOJEONG/algorithm_practice: 알고리즘 공부 및 코딩테스트 준비
알고리즘 공부 및 코딩테스트 준비. Contribute to YOOHYOJEONG/algorithm_practice development by creating an account on GitHub.
github.com