728x90
안녕하세요 뚜디 입니다:)
코딩테스트 연습 - 이상한 문자 만들기 | 프로그래머스 (programmers.co.kr)
1. 연습 문제
2. 문제 풀이
3. 소스 코드
4. 결과
1. 연습 문제
- 문제 설명
문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요.
- 제한 조건
문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단해야합니다.첫 번째 글자는 0번째 인덱스로 보아 짝수번째 알파벳으로 처리해야 합니다.
- 입출력 예
s | return |
"try hello world" | "TrY HeLlO WoRlD" |
2. 문제 풀이
"try hello world"는 세 단어 "try", "hello", "world"로 구성되어 있습니다. 각 단어의 짝수번째 문자를 대문자로, 홀수번째 문자를 소문자로 바꾸면 "TrY", "HeLlO", "WoRlD"입니다. 따라서 "TrY HeLlO WoRlD" 를 리턴합니다.
임의의 문자열을 split() 함수를 통해 리스트로 변환하여 진행하면 큰 어려움은 없습니다.
다만 split() 함수를 사용할때 공백 관련하여 유의 해야할 점이 있습니다 아래에서 설명하도록 하겠습니다.
3. 소스 코드
- 잘못된 동작하는 소스 코드 예
def solution(s):
answer = []
temp = ''
s = s.split()
for i in range(len(s)):
for j in range(len(s[i])):
if(j % 2):
temp += s[i][j].lower()
else:
temp += s[i][j].upper()
answer.append(temp)
temp = ''
return (" ").join(answer)
s = s.split() 을 통해 "try hello world"를 리스트로 변환하게되면
["try", "hello", "world"] 로 만들어 지게되는데 입출력 예제에서는 문제가 없지만
해당소스를 제출하게되면 아래와같이 실패를 하게됩니다. 그 이유는
"try hello world" 기본 예제에서 이렇게 여러개의 공백을 추가했을 경우 문제가 발생하게되는데
s = s.split() 을 진행하게 되면 ["try", "hello", "world"] 아까와 같은 리스트가 만들어지는
오류가 발생하게됩니다. 따라서 s = s.split(" ")으로 정확히 공백 하나에 대해서 명시를 해줘야 합니다.
- 정상 동작하는 소스 코드 예
def solution(s):
answer = []
temp = ''
s = s.split(" ")
for i in range(len(s)):
for j in range(len(s[i])):
if(j % 2):
temp += s[i][j].lower()
else:
temp += s[i][j].upper()
answer.append(temp)
temp = ''
return (" ").join(answer)
4. 결과
728x90
'Programmers > Python' 카테고리의 다른 글
[Python] 프로그래머스 :: 문자열을 정수로 바꾸기 (0) | 2021.09.25 |
---|---|
[Python] 프로그래머스 :: 약수의 합 (0) | 2021.09.25 |
[Python] 프로그래머스 :: 자릿수 더하기 (0) | 2021.09.24 |
[Python] 프로그래머스 :: 자연수 뒤집어 배열로 만들기 (0) | 2021.09.24 |
[Python] 프로그래머스 :: 정수 내림차순으로 배치하기 (0) | 2021.09.24 |