오늘 풀어 볼 문제는 이상한 문자 만들기!
문제 설명 & 제한 사항 & 입출력 예시
문제 풀이
사실 이번 문제는 조금 이해가 안됬다.
문제가 어려워서 이해가 안된것이 아니라 쉬운데 왜 아스키코드로 접근하면 틀렸다고 하는지...
무튼 내가 접근했던 방법은 총 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으로 변환해준다.
그 이유는 문자마다 인덱스를 따로 구분해야하기 때문이다.
끝!
이번 문제가 막 어려운건 아니였지만
모든 문제가 생각 한 케이스에 일치하지 않는다는 걸 다시 한번 느꼈다.
다음에는 더 좋은 포스팅으로 찾아오겠습니다.
'Algorithm > 프로그래머스' 카테고리의 다른 글
세무민의 알고가자 : 프로그래머스 3진법 뒤집기 문제 풀기 (6) | 2021.03.04 |
---|---|
세무민의 알고가자 : 프로그래머스 문자열 내 마음대로 정렬하기 문제 풀이 (0) | 2021.02.28 |
세무민의 알고가자 : 프로그래머스 폰켓몬 문제 풀기 (2) | 2021.02.26 |
세무민의 알고가자 : 프로그래머스 카펫 문제 풀기 (6) | 2021.02.25 |
세무민의 알고가자 : 프로그래머스 구명보트 문제 풀기 (0) | 2021.02.24 |