728x90
✔코드작성을 위한 사전 지식!
str.split(sep='구분자', maxsplit=분할횟수) | 문자열을 sep를 기준으로 maxsplit 횟수만큼 문자열을 구분하여 잘라주는 것. split을 취하면 list로 만들어준다. 1. sep 기본값 none 띄어쓰기, 엔터 등의 구분자를 통해 문자열을 잘라준다. ex. str.split(sep=';') or str.split(';') 2. maxsplit 기본값 -1 문자열을 몇번 자를지에 대한 파라미터 ex. str.split(' ',1) or str.split(maxsplit=1) |
str.upper() | string(문자열)의 모든 문자를 대문자로 바꿔준다. |
str.lower() | string(문자열)의 모든 문자를 소문자로 바꿔준다. |
https://programmers.co.kr/learn/courses/30/lessons/12930
오늘은 프로그래머스의 "이상한 문자 만들기"에 대해 포스팅하도록 하겠습니다!
이상한 문자 만들기의 문제에 대해 간단하게 정의하자면 다음과 같습니다.
문제 간단 정의 |
Q. 문제 - 문자열 s : 한 개 이상의 단어 - 각 단어 : 하나 이상의 공백문자로 구분 -> 짝수번째 알파벳 : 대문자 -> 홀수번째 알파벳 : 소문자 #. 제한사항 - 문자열 전체 짝수 판별 아님 - 공백 기준으로 짝수 판별 - 0번째 인덱스? 짝수번째 알파벳 #. Input : S (문자열임) #. Output : answer (대소 변환 문자열임) |
이 문제를 해결하기 위해서 저는 아래와 같은 접근법을 미리 생각 한 후 시도하였습니다.
Solution |
접근 1. 문자열을 공백기준으로 split => split 된 걸 list a를 만들어서 요소로 담아준다. 접근 2. 단어 각각의 요소 접근 접근 3. 공백 기준으로 나눈 단어 갯수 파악 접근 4. split된 list 요소 각각의 인덱스 홀 짝 구분, 대소 변환 |
위의 접근법을 바탕으로 코드를 아래와 같이 짜보았습니다.
def solution(s):
a=[]
a = s.split(" ")
#print(s)
answer = ''
# 접근 1
# print(a) #확인 용 코드
# 접근 2
# 접근 3
for i in a:
for j in range(len(i)):
# 접근 4
if j%2==0:
answer += i[j].upper()
else:
answer += i[j].lower()
answer += ' '
## 마지막 삽입된 공백 제거
return answer[0:-1]
코드는 비교적 쉬운 코드이나, 마지막에 return 값 때문에 고생을 했습니다.
return 값을 처음에는 프로그래머스에서 제공해준 basic return 값 answer로 사용하였습니다. 이렇게 answer만을 반환해주면 값이 틀렸다고 뜹니다ㅜㅜ 다시 코드를 찬찬히 살펴보니, 마지막에 answer += ' '으로 인해 반환값에 공백이 추가되어 틀린 답을 도출한 것이었네요..
나처럼 바보같은 짓을 하는 사람이 없길..
728x90
'STUDY > Python' 카테고리의 다른 글
[파이썬 가상환경] 파이썬 가상 환경 생성 방법 (0) | 2022.12.20 |
---|---|
[파이썬 문법] 자료형 (0) | 2022.12.05 |
Python Object Oriented Programming(OOP) (0) | 2022.02.09 |
[백준] 1712번 (0) | 2022.02.03 |
[백준] 14501번 (0) | 2022.01.25 |