일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- react
- 동적계획법
- python
- VUE
- javascript
- 코테연습
- Level2
- 고득점Kit
- 리액트
- 백준
- dp
- 프로그래머스
- 리트코드
- web
- 프로그래밍
- typescript
- CS
- 카카오
- 배열
- 웹프로그래밍
- C++
- sql
- Doitvue.js입문
- OS
- Medium
- Level1
- LeetCode
- Level3
- 자바스크립트
- 파이썬
- Today
- Total
[프로그래머스] 이상한 문자 만들기 - python 본문
이상한 문자 만들기
문제 설명
문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요.
제한사항
- 문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단해야합니다.
- 첫 번째 글자는 0번째 인덱스로 보아 짝수번째 알파벳으로 처리해야 합니다.
풀이
문제 조건을 잘 봐야된다. 각 단어는 하나 이상의 공백문자로 구분되어 있다고 했다.
즉
" jump space one two three "
" try hello world "
"a a a"
이런 케이스들이 존재한다는 것이다.
처음에는 아무 생각 없이 s.split()으로 단어를 나눠서 풀었다가 테스트케이스에서 털렸다.
왜냐면 파이썬에서 s.split()과 s.split(" ")은 다르기 때문이다.
split()에 아무 값도 넣어주지 않으면 공백을 기준으로 문자열을 나눠준다.
split(" ")처럼 괄호 안에 특정 값이 있을 경우에는 괄호 안의 값을 구분자로 해서 문자열을 나눠준다.
"a a a "를 나눠보면 아래와 같다
>> print(s.split(" "))
['a', '', '', 'a', 'a', '', '', '']
>> print(s.split())
['a', 'a', 'a']
즉 split()는 모든 공백을 하나로 처리하고 split(' ')는 이후 공백을 전부 따로따로 처리한다.
split(' ')는 문자열 사이 사이에 있는 공백만 배열의 분할점으로 이용하고 공백이 연속하여 나오면 일반 문자 다음에 오는 공백을 제외한 나머지는 각각 리스트의 요소로 처리한다. 그리고 마지막에 분할할 요소가 없다면 남은 공백을 전부 하나의 요소로 처리한다.
따라서 split(" ")를 이용해서 단어를 나눠주는 게 핵심이었다.
def solution(s):
s = s.split(" ")
for i, w in enumerate(s):
if w == " ":
continue
w = list(w)
for j in range(len(w)):
if j % 2 == 0:
w[j] = w[j].upper()
else:
w[j] = w[j].lower()
s[i] = ''.join(w)
return " ".join(s)
" ".join을 이용해서 문자열을 마지막에 붙여주면 어차피 단어 사이의 공백이 한 개씩 제거된 상태에서 공백이 하나씩 다시 들어가는 거니까 원래 문자열과 같아진다.
'코테 문제 풀이' 카테고리의 다른 글
[프로그래머스] 자연수 뒤집어 배열로 만들기 - python (0) | 2022.03.30 |
---|---|
[프로그래머스] 자릿수 더하기 - python (0) | 2022.03.30 |
[프로그래머스] 약수의 합 - python (0) | 2022.03.30 |
[프로그래머스] 시저 암호 - python (0) | 2022.03.30 |
[프로그래머스] 문자열을 정수로 바꾸기 - python (0) | 2022.03.30 |