본문 바로가기

STUDY/Python

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

728x90

 

✔코드작성을 위한 사전 지식!

str.split(sep='구분자', maxsplit=분할횟수)  문자열을 sep를 기준으로 maxsplit 횟수만큼  문자열을 구분하여 잘라주는 것. split을 취하면 list로 만들어준다.

1. sep 
기본값 none
띄어쓰기, 엔터 등의 구분자를 통해 문자열을 잘라준다.
ex. str.split(sep=';')  or  str.split(';')

2. maxsplit
기본값 -1
문자열을 몇번 자를지에 대한 파라미터
ex. str.split(' ',1)  or   str.split(maxsplit=1)
str.upper() string(문자열)의 모든 문자를 대문자로 바꿔준다.
str.lower() string(문자열)의 모든 문자를 소문자로 바꿔준다.

 

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

 

코딩테스트 연습 - 이상한 문자 만들기

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

programmers.co.kr

오늘은 프로그래머스의 "이상한 문자 만들기"에 대해 포스팅하도록 하겠습니다!

이상한 문자 만들기의 문제에 대해 간단하게 정의하자면 다음과 같습니다.

 

문제 간단 정의
Q. 문제
- 문자열 s : 한 개 이상의 단어
- 각 단어 : 하나 이상의 공백문자로 구분
-> 짝수번째 알파벳 : 대문자
-> 홀수번째 알파벳 : 소문자

#. 제한사항
- 문자열 전체 짝수 판별 아님
- 공백 기준으로 짝수 판별
- 0번째 인덱스? 짝수번째 알파벳

#. Input : S (문자열임)
#. Output : answer (대소 변환 문자열임)

이 문제를 해결하기 위해서 저는 아래와 같은 접근법을 미리 생각 한 후 시도하였습니다.

Solution
접근 1. 문자열을 공백기준으로 split
          => split 된 걸 list a를 만들어서 요소로 담아준다.

접근 2. 단어 각각의 요소 접근

접근 3. 공백 기준으로 나눈 단어 갯수 파악

접근 4. split된 list 요소 각각의 인덱스 홀 짝 구분, 대소 변환

위의 접근법을 바탕으로 코드를 아래와 같이 짜보았습니다.

def solution(s):
  a=[]
  a = s.split(" ")

  #print(s)
  answer = ''  
  
  # 접근 1
  # print(a) #확인 용 코드

  # 접근 2
  # 접근 3
  for i in a:
    for j in range(len(i)):
      # 접근 4
      if j%2==0:
        answer += i[j].upper() 
      else:
        answer += i[j].lower()
    answer += ' '

  ## 마지막 삽입된 공백 제거
  return answer[0:-1]

코드는 비교적 쉬운 코드이나, 마지막에 return 값 때문에 고생을 했습니다.

return 값을 처음에는 프로그래머스에서 제공해준 basic return 값 answer로 사용하였습니다. 이렇게 answer만을 반환해주면 값이 틀렸다고 뜹니다ㅜㅜ 다시 코드를 찬찬히 살펴보니, 마지막에 answer += ' '으로 인해 반환값에 공백이 추가되어 틀린 답을 도출한 것이었네요..

 

나처럼 바보같은 짓을 하는 사람이 없길..

728x90

'STUDY > Python' 카테고리의 다른 글

[파이썬 가상환경] 파이썬 가상 환경 생성 방법  (0) 2022.12.20
[파이썬 문법] 자료형  (0) 2022.12.05
Python Object Oriented Programming(OOP)  (0) 2022.02.09
[백준] 1712번  (0) 2022.02.03
[백준] 14501번  (0) 2022.01.25