
문제 설명
문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요.
제한 사항
- 문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단해야합니다.
- 첫 번째 글자는 0번째 인덱스로 보아 짝수번째 알파벳으로 처리해야 합니다.
입출력 예
s return
"try hello world" | "TrY HeLlO WoRlD" |
입출력 예 설명
"try hello world"는 세 단어 "try", "hello", "world"로 구성되어 있습니다. 각 단어의 짝수번째 문자를 대문자로, 홀수번째 문자를 소문자로 바꾸면 "TrY", "HeLlO", "WoRlD"입니다. 따라서 "TrY HeLlO WoRlD" 를 리턴합니다.
제출 코드
4번의 수정을 거쳐서 성공했다.
#1. 6.3점
def solution(s):
result = ""
word = list(map(str, s.split()))
for i in word:
n = 0
for j in i:
n += 1
if n%2 == 1:
result += j.upper()
else:
result += j
if i != word[-1]:
result += " "
return result
제일 처음 제출한 코드 홀수 자리를 대문자로 바꾸는 작업만 있었다. 테스트 케이스가 소문자로 되어 있어 단순하게 대문자로 변경해줘야지! 라는 생각만 했다.
#2. 31.3점
def solution(s):
result = ""
word = list(map(str, s.split()))
for i in word:
n = 0
for j in i:
n += 1
if n%2 == 1:
result += j.upper()
else:
result += j.lower()
if i != word[-1]:
result += " "
return result
그래서 제출한 두번째 코드는 짝수자리를 소문자로 만들어주는 것. 그런데 이것도 실패를 했다.
#3. 68.8점
def solution(s):
result = ""
word = list(map(str, s.split(' ')))
for i in word:
n = 0
for j in i:
n += 1
if n%2 == 1:
result += j.upper()
else:
result += j.lower()
if i != word[-1]:
result += " "
return result
https://school.programmers.co.kr/questions/78216 질문 목록을 찾다가 이 글을 발견했다.
split()
과 split(’ ‘)
에 차이가 있었다. 단순히 ‘ split()
안의 괄호를 비워주면 공백을 기준으로 문자를 나눈다’ 라고만 알고있었다. 그래서 공백으로 단어를 구분하고 있으니 빠르게 작성하기 위해 괄호 안을 비워주었는데, 이게 문제였다.
※ 자세한 내용은 링크 참고.
하지만 그래도 몇 개의 케이스만 통과하고 오답
#4. 성공
def solution(s):
result = ""
word = list(map(str, s.split(' ')))
for i in word:
n = 0
for j in i:
n += 1
if n%2 == 1:
result += j.upper()
else:
result += j.lower()
result += " "
return result[:-1]
"TrY-HeLlO-WoRlD“가 나와야 할 것을 문자열이 끝나는 none
때문에 "TrY-HeLlO-WoRlD-“가 계속 나왔다. 마지막 문자열 해결을 위해 반복문 안에서 조건을 만들어줬는데 "TrY-HeLlO-WoRl“로 출력이 되고 있었다.
마지막 문자열을 어떻게 처리하고 모든 단어를 제대로 출력할 수 있을까 고민했다. 조건문을 만들지 않으면 제일 뒤에 공백이 나오고, 조건문을 넣으면 제일 뒤 단어가 사라진다. 조건문을 없애고 반환 자체에서 마지막 자리를 제거시켜줬다.
split()
과 split(’ ‘)
은 같다고 생각했는데 그 결과가 전혀 다르다는 것을 알았다.
"try---hello---world---“ 을 입력했을 때 split()과 split(' ')의 차이점은 아래와 같다.
split() | TrY-HeLlO-WoRlD |
split(' ') | TrY---HeLlO---WoRlD--- |
공백을 포함하여 나누고 싶을 때는 확실히 split(’ ‘) 괄호 안에 공백을 넣어줘야 한다는 걸 새로 알게 됐다.
'CodingTest > programmers' 카테고리의 다른 글
[프로그래머스] 서버 증설 횟수 -java (0) | 2025.03.20 |
---|---|
[프로그래머스] 문자열 내 마음대로 정렬하기 -python (0) | 2024.12.31 |
[프로그래머스] 약수의 개수와 덧셈 - python (2) | 2024.12.27 |
[프로그래머스] 정수 내림차순으로 배치하기 - python (0) | 2024.12.24 |
[프로그래머스] 자연수 뒤집어 배열로 만들기 -python (1) | 2024.12.24 |