Algorithm/프로그래머스

[Python] [코딩 기초 트레이닝] / 코드 처리하기

code-bean 2024. 8. 15. 18:24

[Q]

1. 문자열 [code]를 읽어옴 

2. mode = 1 or 0 에 따라 짝수 문자열이나 홀수 문자열을 가져와야함

3. [code]에 1이 있을때마다 mode가 변경됨

4. 시작하는 mode는 0

def solution(code):
    answer = ''
    return answer

 

 

- 먼저 mode를 0에 고정시키고, 비어있는 문자열 [ret] 만들어야 함

- mode가 0인지 1인지 확인하고 경우의 수를 따져줘야함

- [ret]이 빈 문자열 그대로라면 'EMPTY'를 return 해야함

 

 

[A] (내가 쓴 답)

def solution(code):
    
    mode = 0
    ret = ''
    
    for i in range(len(code)) :
        
        if mode == 0 :
            
            if (code[i] != '1') and (i%2 == 0):
                ret += code[i]
            elif code[i] == '1' :
                mode = 1
        
        else:
            
            if (code[i] != '1') and (i%2 != 0):
                ret += code[i]
            elif code[i] == '1' :
                mode = 0
                
    if ret == '' :
        return 'EMPTY'
                
    return ret

 

 

[A] 다른 답들

def solution(code):
    return "".join(code.split("1"))[::2] or "EMPTY"

 

도대체 사람들은 어떻게 이렇게 숏코딩을 할 수 있는거지..

 

def solution(code):
    answer = ''

    mode = 0
    for i in range(len(code)):
        if code[i] == '1':
            mode ^= 1
        else:
            if i % 2 == mode:
                answer += code[i]

    return answer if answer else 'EMPTY'

 

* ^= : xor

*   if i % 2 == mode:
                answer += code[i]

     -> if 문을 하나로 줄여줌