728x90
반응형
프로그래머스의 Level 01 문제 중 `이상한 문자열 만들기`에 도전했다. Level 01 임에도 불구하고 3~4시간을 삽질하며 이런저런 시도를 해봤다.
for idx in s.split(" "):
for index, value in enumerate(idx):
if index % 2 == 0:
answer += value.upper()
else:
answer += value.lower()
answer += " "
return answer.rstrip()
문제 설명을 보고 위와 같이 로직을 세우고 제출했다. 결과는 실패다. 문자열에 + 연산을 해주는 게 문제일까? 뭐가 문제일까 하면서 answer를 string 객체가 아닌 list로 만들고 append를 통해서도 사용해보고 하면서 enumerate 보다 range를 이용해서 푸는 걸 추천한다는 글을 발견해서 다음과 같이 코드를 변경했다.
def solution(s):
answer = str()
for string in s.split(" "):
for i in range(len(string)):
if (i % 2) == 0:
answer += string[i].upper()
else:
answer += string[i].lower()
answer += " "
return answer.rstrip()
위 코드의 결과는 똑같이 실패다. 뭐가 문제지 하면서 다시 한 두시간 정도 검색 도중. 문득 strip()에 관련된 메서드에 문제가 있는 게 아닐까 하는 생각이 스쳐 지나갔다. 검색 결과 strip()은 재귀적으로 호출하며 문자를 지워나간다는 글을 발견했다.
결과적으로 처음 작성했던 코드를 다음과 같이 변경했다.
def solution(s):
answer = ""
# pythonic 스타일
for idx in s.split(" "):
for index, value in enumerate(idx):
if index % 2 == 0:
answer += value.upper()
else:
answer += value.lower()
answer += " "
return answer[:-1]
결과는 충격적이게도 통과였다. 운 좋게 발견한 글에서 strip()이 재귀 호출이라는 점을 발견해 풀었지만 함수의 동작 방식은 앞으로 한 번씩 찾아보면서 사용하는 것이 도움이 되지 않을까
728x90
반응형
'Language > Python' 카테고리의 다른 글
0은 False이다 !! (0) | 2022.04.03 |
---|---|
pyinstaller의 EXE파일, 소스 코드 열어보기 (0) | 2021.09.19 |
pyJWT : encode /decode / registerd claim names (0) | 2021.08.13 |
[Python][Excel] : Sheet to file (0) | 2020.11.06 |
[Python] Selenium에서 스크롤 다운하는 방법 (0) | 2020.11.06 |