https://school.programmers.co.kr/learn/courses/30/lessons/12930
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
오늘 푼 문제는 프로그래머스의 이상한 문제 만들기이다.
def solution(s):
result = []
for i in s.split():
answer = ''
for index, world in enumerate(i):
if index % 2 == 0:
answer += world.upper()
else:
answer += world
result.append(answer)
return ' '.join(result)
위의 코드는 예제는 맞지만 제출을 하면 대부분 틀린 정답으로 나온다.
그 이유는 공백을 기준으로 해야하기 때문이다.
그런데 코드를 보면 .split()을 이용해 언뜻보면 공백을 나눈 것처럼 보이지만
힌트를 보니
파이썬의 문자열.split()은 인자 없이 호출하면 연속된 공백은 단일 구분자로 취급하고, 시작과 끝에 오는 공백은 모두 무시합니다. 문자열.split(" ")와 같이 사용해야 합니다.
이렇게 적혀 있었다.
그리고 또 안되는 이유가 있었는데 바로
else:
answer += world
이 부분에 .lower()을 안써서 안됬던 거였다. 솔직히 여기서 약간 섟이 나갔다 ㅠㅠ 여기서만 한 30분정도를 잡아먹었던거 같다.
def solution(s):
result = []
for i in s.split(' '):
answer = ''
for index, world in enumerate(i):
if index % 2 == 0 or index == 0:
answer += world.upper()
else:
answer += world.lower()
result.append(answer)
return ' '.join(result)
이렇게 적으면 통과가 된다.
오늘 내가 처음쓴 게 있는데 바로
for index, world in enumerate(i):
요 친구 이다. 이 친구는 파이썬의 내장함수중 하나로 내가 이해한 개념으로는 리스트안 값이 [스, 파, 르, 타] 이렇게 대충 있다 치자.
저 상태에서 print(index, world)를 하면 출력값이
0 스
1 파
2 르
3 타 대충 이렇게 나온다고 나는 이렇게 이해를 했다.
