Algorithm/프로그래머스

세무민의 알고가자 : 프로그래머스 이상한 문자 만들기 문제 풀기

세기루민 2021. 2. 27. 22:20
728x90

오늘 풀어 볼 문제는 이상한 문자 만들기!



문제 설명 & 제한 사항 & 입출력 예시


문제 풀이

사실 이번 문제는 조금 이해가 안됬다.

문제가 어려워서 이해가 안된것이 아니라 쉬운데 왜 아스키코드로 접근하면 틀렸다고 하는지...

무튼 내가 접근했던 방법은 총 3가지!

1. 아스키 코드로 변환해서 대소문자를 변경해주기 

2. str -> list -> str로 쪼개서 만들기

3. list 상태로 구분하기

3가지 중 정답은 3번이였다.

위에 문제를 접근하기 전 가장 먼저 체크해야 하는 부분은 

홀수와 짝수를 구분해서 대소문자로 변경해주는 것인데 

이는 X % 2 == 0이라는 조건이 만족한다면 대문자, 그렇지 않다면 소문자!

배열이 0부터 시작하기 때문에 잘 체크해야 한다.

무튼 아스키코드로 접근하려고 했던 방식은 이렇다.

대문자와 소문자의 차이가 32

예를 들어서 str(chr(ord('a') - 32)) 이런 느낌으로 구현해보려고 했으나 테스트 케이스에서 통과를 못했다.

2번째 방법도 통과를 못한 케이스가 존재했는데 고민하다가 굳이 리스트 변환할 필요가 없었던거 같았다.

따라서 아래와 같이 구현했다.


코드

def solution(s):
    result = ""
    count = 0
    for i in s:
        if i != " ":
            if count % 2 == 0:
                tmp = str(i)
                result += tmp.upper()
            else:
                tmp2 = str(i)
                result += tmp2.lower()
            count += 1

        else:
            result += " "
            count = 0

    return result

upper는 문자열을 대문자로, lower은 문자열을 소문자로 변환시켜준다.

그리고 뛰어쓰기가 존재한다면 result에 뛰어쓰기를 추가한 뒤 count = 0으로 변환해준다.

그 이유는 문자마다 인덱스를 따로 구분해야하기 때문이다.

끝!


이번 문제가 막 어려운건 아니였지만

모든 문제가 생각 한 케이스에 일치하지 않는다는 걸 다시 한번 느꼈다.

다음에는 더 좋은 포스팅으로 찾아오겠습니다.

 

728x90