🤍 문제 : https://school.programmers.co.kr/learn/courses/30/lessons/12951
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
사내 코딩테스트 때문에 프로그래머스 모든 문제에서 'Python3+level2' 로 맞춰놓고 처음부터 푸는 중인데
어이가 없어서 포스팅하는 문제
🤍 첫 코드 (실패)
def solution(s):
answer = ''
word = s.split()
for i in range(0, len(word)):
temp = ''
for j in range(0, len(word[i])):
if j == 0:
temp += word[i][j].upper()
else:
temp += word[i][j].lower()
if i == len(word)-1:
answer += temp
else:
answer += (temp + ' ')
return answer
내가 이 문제를 보고 당연하게도 처음 풀었던 방식은
1. 문장을 띄어쓰기 기준으로 split
2. 반복문으로 단어 별로 맨 앞글자는 upper(), 나머지는 lower() 를 해서 answer에 더하기
였다..
이랬더니 50점도 못맞는 결과가 나와서 '??????????????' 도대체 왜?????? 하다 문제를 가만히 읽어보니
단어 사이에 공백이 2개 이상 올 수 있었다
띠용 .. 그래서 바꾼 코드
🤍 바꾼 코드
def solution(s):
answer = ''
for i in range(0, len(s)):
if i == 0:
answer += s[i].upper()
else:
if s[i-1] == ' ':
answer += s[i].upper()
else:
answer += s[i].lower()
return answer
그래서 split 하지 않고 들어온 문자열 그대로 왼쪽에 공백이 있으면 upper(), 아니면 lower() 로 짰다.
(맨 첫 문자는 s[i-1]로 왼쪽 인덱스로 접근이 불가능 하기 때문에 예외처리)
만약에 테스트케이스 30개 결과를 볼 수 없다면 그냥 당연스럽게 맞았을 줄 알고 넘어갔을 ..
교훈을 주는 문제 (ง •_•)ง
'알고리즘 > 프로그래머스 연습문제' 카테고리의 다른 글
[Python/프로그래머스] 이진 변환 반복하기 - level 2 (2) | 2022.11.04 |
---|---|
[Python/프로그래머스] 올바른 괄호 - level 2 (0) | 2022.11.03 |
[Python/프로그래머스] 최솟값 만들기 - level 2 (0) | 2022.11.02 |