코드 처리하기

이재하·2025년 7월 20일

문제 설명

문자열 code가 주어졌을 때, code를 앞에서부터 읽으면서 특정 규칙에 따라 새로운 문자열 answer를 만들어야 합니다.

📚 규칙 설명

mode는 0 또는 1의 값을 가지며, 초기값은 0입니다.

code를 왼쪽부터 차례대로 읽으면서 각 인덱스 i에 대해 다음 조건을 수행합니다.

✅ mode가 0일 때

code[i] == "1"이면 → mode를 1로 전환

"1"이 아니고 i가 짝수이면 → answer에 code[i] 추가

✅ mode가 1일 때

code[i] == "1"이면 → mode를 0으로 전환

"1"이 아니고 i가 홀수이면 → answer에 code[i] 추가

❗추가 조건

최종 문자열 answer가 빈 문자열이면 "EMPTY"를 반환합니다.

🖥️ 입력 / 출력 예시

coderesult
"abc1abc1abc""acbac"
"11111""EMPTY"
def solution(code):
    answer = ''
    mode = 0

    for i in range(len(code)):
        if code[i] == "1":
            mode = 1 - mode  # mode 전환 (0 ↔ 1)
        else:
            if mode == 0 and i % 2 == 0:
                answer += code[i]
            elif mode == 1 and i % 2 == 1:
                answer += code[i]

    return answer if answer else "EMPTY"

🔍 동작 예시 분석

입력: "abc1abc1abc"
mode 변화 및 answer 누적 과정:
icode[i]mode조건 통과 여부answer
0a0✅ 짝수a
1b0❌ 홀수a
2c0✅ 짝수ac
311mode 전환ac
4a1❌ 짝수ac
5b1✅ 홀수acb
6c1❌ 짝수acb
710mode 전환acb
8a0✅ 짝수acba
9b0❌ 홀수acba
10c0✅ 짝수acbac

최종 결과: "acbac"

0개의 댓글