코딩테스트

[25.12.15 코테(Python)]-코드 처리하기

지니248 2025. 12. 15. 16:32

Lv0. 코드 처리하기 (Python)

링크: https://school.programmers.co.kr/learn/courses/30/lessons/181932

내가 작성한 코드

def solution(code):
    mode = 0
    ret = []
    
    for idx, ch in enumerate(code):
    # enumerate() -> 왼쪽부터 코드를 하나씩 보며 (현재 위치(idx), 현재문자(ch))를 동시에 사용
    # idx: 홀/짝 판단
    # ch: 1인지 아닌지 판단
    
        if ch == '1': # 문자가 1인지 확인
            mode = 1 - mode # 1을 만날 때마다 mode가 0 <-> 1 로 바뀜
            continue # 다음 문자로 넘어감. mode만 바꾸고 다음 글자 확인
        
        if idx % 2 == mode: # mode=0이면 짝수 인덱스, mode=1이면 홀수 인덱스만 선택
            ret.append(ch) # 현재 mode에 따라 문자를 결과에 포함시키기
                
    answer = ''.join(ret) # ret 리스트에 모아둔 문자들을 하나의 문자열로 합침
    
    if answer == '': # answer에 아무 문자도 추가되지 않았다면 “EMPTY” 반환
        return "EMPTY"
    return answer


새로 배운 코드

def solution(code):
    answer = ''
    mode = 0
    
    # 문자열의 인덱스 0부터 하나씩 확인
    for i in range(len(code)):
        if code[i] == '1': # 현재 문자가 ‘1’이면
            mode ^= 1 # XOR 연산을 이용해 mode를 0 <-> 1로 토글
            # (^: 비트 XOR 연산자 -> 두 값이 다르면 1, 같으면 0)
            # (값을 반대로 바꾸는 토글로 쓸 수 있음)
            continue # ‘1’은 결과에 추가하지 않음

        else:
            if i % 2 == mode: # 위 주석 참고
                answer += code[i] # 결과 문자열 뒤에 현재 문자 추가

    return answer if answer else 'EMPTY'