알고리즘(백준, 프로그래머스)/[프로그래머스] Lv1

[프로그래머스] Lv1. 이상한 문자 만들기 - 파이썬(Python)

마법사 코딩공주 2023. 5. 10. 22:55
728x90
반응형

문제링크 : https://school.programmers.co.kr/learn/courses/30/lessons/12930

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

📝 문제설명

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

🔗 제한 사항

- 문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단해야합니다.
- 첫 번째 글자는 0번째 인덱스로 보아 짝수번째 알파벳으로 처리해야 합니다.

🔗입출력예

입출력 예 설명

"try hello world"는 세 단어 "try", "hello", "world"로 구성되어 있습니다. 각 단어의 짝수번째 문자를 대문자로, 홀수번째 문자를 소문자로 바꾸면 "TrY", "HeLlO", "WoRlD"입니다. 따라서 "TrY HeLlO WoRlD" 를 리턴합니다.


👉 문제풀이

  • 공백을 기준으로 단어를 분리하고, 그 단어에 따라 짝, 홀수를 판별하여 대소문자를 변경해야하는 문제
  • 공백 기준으로 분리하기 위해 split(' ')함수를 사용 
  • a에는 list가 생성됨 ->  ['try', 'hello', 'world']
  • 처음 반복문에 i의에 try, hello, world 값을 넣고, 다음 반복문에는 단어 길이만큼 반복한다.
  • 단어의 인덱스의 짝수, 홀수를 판별하는 if문을 통해 짝수면 대문자 upper()함수를, 홀수면 소문자 lower()함수를 이용하여 빈 문자열 answer 변수에 저장한다.
  • 단어마다 공백이 필요하기 때문에, 인덱스 for문이 끝나면 answer에 공백을 추가해준다.
  • 최종 return 값을 그냥 answer로 할 경우 마지막 뒤에 공백이 생겨 실제 출력값과 다르게 된다.
  • 따라서, 마지막 공백은 제외하고 return해야하므로 answer[:-1]을 해준다.
def solution(s):
    answer = ''
    a = s.split(' ') # ['try', 'hello', 'world']

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

👉 다른사람 풀이(enumerate)

  • 공백기준으로 단어를 분리하여 w에 값을 저장
  • enumerate()함수를 통해 인덱스 i와 각 단어를 저장
  • if문을 통해 인덱스i가 짝수일 경우 대문자, 홀수일 경우 소문자인 조건문 작성
  • 최종 리스트를 공백을 기준으로 조합한다.
def toWeirdCase(s):
    # 함수를 완성하세요
    return ' '.join(''.join([c.upper() if i % 2 == 0 else c.lower() for i, c in enumerate(w)]) for w in s.split())
# 아래는 테스트로 출력해 보기 위한 코드입니다.
print("결과 : {}".format(toWeirdCase("try hello world")));
728x90
반응형