시작하며...
모든 알고리즘 문제 풀이는 제가 직접 짜서 정답을 맞춘 결과만을 공유합니다.
마지막 'More Solution'은 다른 정답자들 풀이 중 생각지 못했던 부분들이나 좋게 느껴진 풀이법 몇개를 가져와서 공유하였습니다.
[Level 1] 이상한 문자 만들기
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 설명
문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요.
제한 사항
- 문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단해야합니다.
- 첫 번째 글자는 0번째 인덱스로 보아 짝수번째 알파벳으로 처리해야 합니다.
입출력 예
![](https://blog.kakaocdn.net/dn/b3wpkx/btrUOQWh5Oi/rCzbyNagfhSfMM5O1tHIL0/img.png)
입출력 예 설명
"try hello world"는 세 단어 "try", "hello", "world"로 구성되어 있습니다. 각 단어의 짝수번째 문자를 대문자로, 홀수번째 문자를 소문자로 바꾸면 "TrY", "HeLlO", "WoRlD"입니다. 따라서 "TrY HeLlO WoRlD" 를 리턴합니다.
My Solution
def solution(s):
answer = []
list = s.split(' ')
for i in list:
tmp = ''
for j in range(len(i)):
if j % 2 == 0:
tmp += i[j].upper()
else:
tmp += i[j].lower()
answer.append(tmp)
return ' '.join(answer)
주어진 문자열의 각 단어들을 대소문자로 변환하는 문제이다. 각 단어마다의 인덱스를 구분해야 했기때문에 문자열을 나눠서 판단하고 변환하였다.
- 주어진 문자열 s를 공백을 기준으로 나누기 - s.split(' ')
- 나누어진 문자열을 첫번째 단어부터 반복문을 이용하여 변환
- 단어들의 글자를 변환하여 저장할 임시 변수 tmp 생성
- 각 단어들의 첫번째 글자부터 반복문을 돌면서 인덱스( j ) 가 짝수인지, 홀수인지 판단하여 대소문자 변환
- 인덱스가 짝수면 대문자, 홀수면 소문자로 변환하여 tmp 변수에 더하기
- 변환된 문자 tmp를 answer 리스트에 append 하여 추가해주었다.
- 리스트 형태의 answer를 공백으로 join하여 결과값 리턴
More Solution
def solution(s):
idx = 0
s_ = [c for c in s]
for i, c in enumerate(s):
if c == ' ':
idx = 0
continue
s_[i] = c.upper() if idx % 2 == 0 else c.lower()
idx += 1
return "".join(s_)
가져온 다른 풀이! 문자열을 split 하여 나누지 않고 idx 라는 변수를 활용하여 문제를 풀이했다
- 주어진 문자열을 단어가 아닌 글자마다의 리스트로 변환
- 문자 리스트 전체 반복문을 돌면서 문자를 변환하였다.
- 반복문을 돌다가 검색된 글자가 공백이라면 idx를 0으로 초기화 하고 문자 변환 없이 continue
- idx 가 짝수라면 i번째 문자를 대문자로 바꿔주고 아니라면 소문자로 변환하면서 idx를 1씩 올려준다.
- 변환된 문자열 리스트 s_ 를 문자열로 join 하고 리턴
'Algorithm > Programmers' 카테고리의 다른 글
[Algorithm] 프로그래머스 - 분수의 덧셈 (0) | 2022.12.28 |
---|---|
[Algorithm] 프로그래머스 - 완주하지 못한 선수 (0) | 2022.12.28 |
[Algorithm] 프로그래머스 - 부족한 금액 계산하기 (1) | 2022.12.28 |
[Algorithm] 프로그래머스 - 문자열 다루기 기본 (0) | 2022.12.28 |
[Algorithm] 프로그래머스 - 약수의 개수와 덧셈 (0) | 2022.12.27 |
댓글