개발자 블로그

프로그래머스 - 이상한 문자 만들기 본문

알고리즘/프로그래머스

프로그래머스 - 이상한 문자 만들기

hayongwoon 2022. 5. 2. 00:14

문제 설명

더보기

문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요.

제한 사항

  • 문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단해야합니다.
  • 첫 번째 글자는 0번째 인덱스로 보아 짝수번째 알파벳으로 처리해야 합니다.

입출력 예

sreturn
"try hello world" "TrY HeLlO WoRlD"

입출력 예 설명

"try hello world"는 세 단어 "try", "hello", "world"로 구성되어 있습니다. 각 단어의 짝수번째 문자를 대문자로, 홀수번째 문자를 소문자로 바꾸면 "TrY", "HeLlO", "WoRlD"입니다. 따라서 "TrY HeLlO WoRlD" 를 리턴합니다.

 

나의 풀이

def solution(s):
    real = []
    for i in s.split(" "):
        answer = ''        # 이 녀석의 위치는 리스트 안에 문자마다 새롭게 정의를 해줘야하기에 이 위치로!
        for idx, val in enumerate(i):
            if idx % 2:
                answer += val.lower()
            else:
                answer += val.upper()
        real.append(answer)
    return ' '.join(real)

 

"각 단어는 하나 이상의 공백문자로 구분되어 있습니다." 문제의 조건 중 일부인데,  이 부분 때문에 애를 많이 먹었다...

어려운 문제는 아니지만, split 함수에 대해 잠깐 짚고 넘어가고자 글을 써봤다!

split()와 split(" ") 차이

출처: https://somjang.tistory.com/entry/Python-%EB%AC%B8%EC%9E%90%EC%97%B4-split-%EA%B3%BC-split-%EC%B0%A8%EC%9D%B4-%EC%95%8C%EC%95%84%EB%B3%B4%EA%B8%B0

 

 

따라서 공백이 많은 값들에 따라 값이 달라질 수 있는 것이었고 그거에 맞게 접근을 했어야했다. 이 문제는 공백에 대한 부분도 캐치해서 코딩을 짰어야했다.

 

join() 리스트를 받아서 문자열로 반환! 매개변수는 리스트! 앞에는 구분자!

''.join(리스트)

'구분자'.join(리스트)

 

join 함수는 매개변수로 들어온 리스트에 있는 요소 하나하나를 합쳐서 하나의 문자열로 바꾸어 반환하는 함수입니다.

''.join(리스트)
''.join(리스트)를 이용하면 매개변수로 들어온 ['a', 'b', 'c'] 이런 식의 리스트를 'abc'의 문자열로 합쳐서 반환해주는 함수인 것입니다.

'구분자'.join(리스트)
'구분자'.join(리스트)를 이용하면 리스트의 값과 값 사이에 '구분자'에 들어온 구분자를 넣어서 하나의 문자열로 합쳐줍니다.
'_'.join(['a', 'b', 'c']) 라 하면 "a_b_c" 와 같은 형태로 문자열을 만들어서 반환해 줍니다.



출처: https://blockdmask.tistory.com/468 [개발자 지망생]