코딩테스트

[프로그래머스] 코드 처리하기 - Lv.0

pyflu 2023. 10. 12. 01:57

오늘은 프로그래머스 181932번 문제"코드 처리하기" Lv.0파이썬으로 풀어보도록 하겠습니다.

[프로그래머스] 코드 처리하기 Lv.0 - [파이썬/python]

 

프로그래머스-코드-처리하기
프로그래머스-코드-처리하기


💻 문제 설명

 

문자열 code가 주어집니다. code를 앞에서부터 읽으면서 만약 문자가 "1"이면 mode를 바꿉니다. mode에 따라 code를 읽어가면서 문자열 ret을 만들어냅니다.

 

mode는 0과 1이 있으며, idx를 0 부터 code의 길이 - 1 까지 1씩 키워나가면서 code[idx]의 값에 따라 다음과 같이 행동합니다.

 

  • mode가 0일 때
    • code[idx]가 "1"이 아니면 idx가 짝수일 때만 ret의 맨 뒤에 code[idx]를 추가합니다.
    • code[idx]가 "1"이면 mode를 0에서 1로 바꿉니다.
  • mode가 1일 때
    • code[idx]가 "1"이 아니면 idx가 홀수일 때만 ret의 맨 뒤에 code[idx]를 추가합니다.
    • code[idx]가 "1"이면 mode를 1에서 0으로 바꿉니다.

 

문자열 code를 통해 만들어진 문자열 ret를 반환(return) 하는 solution 함수를 완성해 주세요.

 

단, 시작할 때 mode는 0이며, 반환(return) 하려는 ret가 만약 빈 문자열이라면 대신 "EMPTY"를 반환(return) 합니다.

 


🚨 제한사항

 

  • 1 ≤ code의 길이 ≤ 100,000
    • code는 알파벳 소문자 또는 "1"로 이루어진 문자열입니다.

🌈 힌트

 

더보기

1. 문자열 순회

for 루프와 enumerate 함수를 사용하여 문자열을 순회하고, 각 문자와 해당 인덱스에 접근하기

 

 

2. mode 변경

문자가 '1’일 때 모드를 변경, 이를 위해 불리언 변수를 사용하고, '1’을 만날 때마다 이 변수의 값을 반전시키기

 

 

3.문자 추가

현재 모드와 인덱스가 짝수인지 홀수인지에 따라 결과 문자열에 문자를 추가

모드가 0일 때는 짝수 인덱스의 문자를, 모드가 1일 때는 홀수 인덱스의 문자를 추가

 

 

4.결과 반환

마지막으로, 결과 문자열이 비어 있지 않으면 그대로 반환하고, 비어 있으면 'EMPTY’를 반환하기


 

 




!!!정답 주의!!!




 

 

 


🌟 소스 코드

 

프로그래머스-코드-처리하기-파이썬-코드
프로그래머스-코드-처리하기-파이썬-코드

 

def solution(code):
   
    result = '' # 결과를 저장할 빈 문자열
   
    # mode를 False로 저장, 이는 mode가 0임을 나타냄.
    mode = False
   
    # enumerate를 사용하여 code 문자열을 순회 / idx는 현재 인덱스, i는 현재 문자
    for idx, i in enumerate(code):
       
        # 만약 현재 문자가 '1'이라면 mode를 변경
        if i == "1":
            mode = not mode
            continue
           
        # 만약 mode가 False이고 idx가 짝수라면, 현재 문자를 result에 추가
        if not mode and idx%2==0:
            result += i
           
        # 만약 mode가 True이고 idx가 홀수라면, 현재 문자를 result에 추가
        elif mode and idx%2==1:
            result += i
       
    # 만약 result가 빈 문자열이라면 'EMPTY'를 반환
    if not result:
        return "EMPTY"
   
    return result # 그렇지 않다면 result를 반환

 

 


🏳‍🌈 테스트 결과

 

프로그래머스-코드-처리하기-상태
프로그래머스-코드-처리하기-상태

 

프로그래머스-코드-처리하기-테스트-결과
프로그래머스-코드-처리하기-테스트-결과

728x90