Programmers - 이상한 문자 만들기(Python)
문제
- 문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요.
제한사항
- 문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단해야합니다.
- 첫 번째 글자는 0번째 인덱스로 보아 짝수번째 알파벳으로 처리해야 합니다.
입출력 예
제목1 | 제목2 |
---|---|
"try hello world" | "TrY HeLlO WoRlD" |
입출력 예 설명
- "try hello world"는 세 단어 "try", "hello", "world"로 구성되어 있습니다. 각 단어의 짝수번째 문자를 대문자로, 홀수번째 문자를 소문자로 바꾸면 "TrY", "HeLlO", "WoRlD"입니다. 따라서 "TrY HeLlO WoRlD" 를 리턴합니다.
✍ 코드
def solution(s):
'''
# (1)
'''
s = s.split(" ")
print(s)
# (2)
check_bit = 0
for word in s:
"""
#(3)
"""
split_word = list(word)
for i in range(0, len(split_word)):
if split_word[i] == " ":
continue
# (4)
if i % 2 == 0 :
split_word[i] = word[i].upper()
# (5)
else:
split_word[i] = word[i].lower()
word = "".join(split_word)
s[check_bit] = word
check_bit += 1
# (6)
s = " ".join(s)
return s
s = "try hello world"
print(solution(s))
- (1) : 문자열 s를 공백으로 구분하여 리스트 type 형식으로 변환하기
- 주의할 점은 s = s.split()이 아닌 s = s.split(" ")로 해야 한다는 점이다.
그 이유는 다음과 같다.
- 문제 입출력 예에서 s는 "try hello world"이다. 이 때에는 s = s.split()로 해도 원하는 값 자체는 얻을 수 있다.
- 그러나 만약 s가 s = "try hello world"와 같이 space(띄어쓰기)가 하나로 단어가 구분된 것이 아니라 여러개의 space로 띄어져 있다면 문제가 발생한다.
- 만약, 위 s에서 s = s.split()을 한다면, 해당 solution 함수의 리턴은 "TrY HeLlO WoRlD"이지만,
s = s.split(" ")을 한다면 해당 solution 함수의 리턴은 "TrY HeLlO WoRlD"이다.
- 즉, 각 단어 사이에 space가 얼마나 있느냐에 따라 그 개수에 맞게 결과 값에도 단어 사이에 동일한 space가 있어야 한다는 점이다. 이 점을 명심해야 한다.
- (2) : 리스트 s의 인덱스를 지정하기 위한 check_bit
- (3) : ord는 문자열이므로 각 word마다 리스트로 접근하여 슬라이싱을 해주고 이를 split_word에 대입한다. 예를 들어 word가 "hello"일 경우 list(word)를 split_word에 대입하면 split_word = ['h', 'e', 'l', 'l', 'o']가 된다.
- (4) : i를 2로 나눈 나머지가 0이면 대문자로 치환
- (5) : i를 2로 나눈 나머지가 1이면 소문자로 치환
- (6) : 리스트 형태의 s를 문자열 형태로 변환
📝 결과
def solution(s):
'''
# (1)
'''
s = s.split(" ")
print(s)
# (2)
check_bit = 0
for word in s:
"""
#(3)
"""
split_word = list(word)
for i in range(0, len(split_word)):
if split_word[i] == " ":
continue
# (4)
if i % 2 == 0 :
split_word[i] = word[i].upper()
# (5)
else:
split_word[i] = word[i].lower()
word = "".join(split_word)
s[check_bit] = word
check_bit += 1
# (6)
s = " ".join(s)
return s
s = "try hello world"
print(solution(s))
- 주의할 점은 s = s.split()이 아닌 s = s.split(" ")로 해야 한다는 점이다.
그 이유는 다음과 같다. - 문제 입출력 예에서 s는 "try hello world"이다. 이 때에는 s = s.split()로 해도 원하는 값 자체는 얻을 수 있다.
- 그러나 만약 s가 s = "try hello world"와 같이 space(띄어쓰기)가 하나로 단어가 구분된 것이 아니라 여러개의 space로 띄어져 있다면 문제가 발생한다.
- 만약, 위 s에서 s = s.split()을 한다면, 해당 solution 함수의 리턴은 "TrY HeLlO WoRlD"이지만,
s = s.split(" ")을 한다면 해당 solution 함수의 리턴은 "TrY HeLlO WoRlD"이다. - 즉, 각 단어 사이에 space가 얼마나 있느냐에 따라 그 개수에 맞게 결과 값에도 단어 사이에 동일한 space가 있어야 한다는 점이다. 이 점을 명심해야 한다.
😃 느낀점
- 처음 풀었을 때 s = s.split() 때문에 테스트에서 통과를 하지 못했다. 다른 코드는 다 맞는데, 이 하나 때문에 통과하지 못했다. 이 덕분에 split()과 split("")의 차이점을 알게 되었다. 오늘 하루도 코딩을 하면서 하나를 배웠다는 점에 기분이 좋았다.
👍 Irish의 모든 코드 보기
-> Irish Github
Author And Source
이 문제에 관하여(Programmers - 이상한 문자 만들기(Python)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@irish/Programmers-이상한-문자-만들기Python저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)