코딩테스트/프로그래머스

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

박소민 2022. 2. 21. 17:39
문제) 이상한 문자 만들기
 

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

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

programmers.co.kr

 

  • 처음 풀이(오답)

- '하나 이상의 공백문자로 구분' 을 고려하지 않음

→ 입력값에 공백이 여러 개 들어가면 여러개 출력해줘야 함

→ join으로 합치면 공백 한개만 생김

def solution(s):
    s=s.split()
    s2=''
    answer=[]
    for i in s:
        for j in range(len(i)):
            s2+=i[j].upper() if j==0 or j%2==0 else i[j].lower()
        answer.append(s2)
        s2=''
    answer=' '.join(answer)
    return answer

 

  • 내 풀이

- 공백문자인지 확인 하는 방법: .isalpha() ==False 이용

- isalpha 함수에 () 안붙이면 cnt변수가 공유가 안됨.

→ cnt=0이 처리가 되지 않아서 계속 수정하느라 시간이 오래 걸림...... () 신경쓰기

def solution(s):
    answer=''
    cnt=0
    for i in range(len(s)):
        if s[i].isalpha()==False:
            answer+=' '
            cnt=0
        else:
            answer+=s[i].upper() if cnt==0 or cnt%2==0 else s[i].lower()
            cnt+=1

    return answer
    
"try hello world"    
"I am   Paul"
#결과
"TrY HeLlO WoRlD"
"I Am   PaUl"

 

 

  • 다른 사람 풀이

- 공백문자 확인하는 방법: 그냥 str==' ' 도 가능

def solution(s):
  answer=''
  index=0

  for c in s:
    if c==' ':
      answer+=c
      index=0
      continue
    answer+=c.upper() if index%2==0 else c.lower()
    index+=1

  return answer