본문 바로가기

TIL

[240314] 파이썬: 코드카타 41

[파이썬 코드카타]

이상한 문자 만들기

https://school.programmers.co.kr/learn/courses/30/lessons/12930

 

1) 어떤 문제가 있었나

각 문자열에서 공백으로 나눠진 단어 기준으로 짝수번째는 대문자, 홀수번째는 소문자인 문자열을 반환

 

s = "try hello world"

return = "TrY HeLlO WoRlD"

 

2) 내가 시도해본 건 무엇인가

- 주어진 문자열을 split()로 잘라서 list에 넣고, for문으로 하나씩 꺼내서 짝수자리수는 upper, 홀수는 lower 되도록 적용 

- 정확성 31.3%로 실패 

def solution(s):
    s = "try hello world"
    answer = ""
    s_list = s.split() 

    for i in s_list:
        for j in range(len(i)):
            if j % 2 == 0: 
                answer += str(i[j]).upper()
            else: 
                answer += str(i[j]).lower()
        answer += " "
    answer = answer[0:-1]
    return answer

 

3) 어떻게 해결했나

- 힌트를 참조하여 문자열의 시작과 끝에 문자열이 포함될 수 있고, 공백문자도 그대로 출력해야 함을 알게됨 

> split() 를 그대로 쓰면 안되고, split(" ")로 써야 되는 것  

- 첫 번째 for문 밑에 i가 공백문자일 경우에도 answer에 추가되도록 함수 추가 

def solution(s):
    answer = ""
    s_list = s.split(" ") # ['', 'try', '', '', 'hello', 'world', '']

    for i in s_list:
        if i == "":
            answer += i
        else: 
            for j in range(len(i)):
                if j % 2 == 0: 
                    answer += str(i[j]).upper()
                else: 
                    answer += str(i[j]).lower()
        answer += " "
    answer = answer[0:-1]
    return answer


4) 무엇을 새롭게 알았나
- 문제의 입출력 예시에 없는 조건도 파악하여 코드를 짜는 것이 중요

- 3진법 바꾸기 문제에서 다른 분들의 풀이를 참고한 것이 문자열 다루기에서도 무척 도움이 되었음