[프로그래머스] 배열 만들기 2

janjanee·2023년 8월 16일
0

코딩테스트

목록 보기
2/6

[프로그래머스] 배열 만들기 2

내 풀이

def solution(l, r):
    binary_integers = []

    for i in range(len(str(l)), len(str(r)) + 1):
        for j in range(2 ** i):
            binary_str = format(j, f'0{i}b')
            
            if binary_str[0] != '0':
                binary_int = int(binary_str.replace("1", "5"))
                binary_integers.append(binary_int)

    filtered_integers = [binary for binary in binary_integers if l <= binary <= r]
    
    return filtered_integers if filtered_integers else [-1]

1) l, r의 자리수만큼 가능한 2진수를 만드는데 이 때 1 대신 5를 넣는다. (0으로 시작은 제외)
2) 결과 리스트를 돌며 l과 r사이에 들어있는 것만 필터링한다.

다른 사람 풀이

def solution(l, r):
    answer = []
    for num in range(l, r + 1):
        if not set(str(num)) - set(['0', '5']):
            answer.append(num)
    return answer if answer else [-1]

set 차집합! 간결하고 우아하다

function solution(l, r) {
    const result = Array.from({length:r-l+1}, (_,i)=>i+l).filter(n=>!/[^05]/.test(n));
    return result.length ? result : [-1];
}

자바스크립트 코드에서 참고했는데 정규식을 쓸 수도 있다.

느낀점

너무 복잡하게 생각하고 접근했다.

profile
얍얍 개발 펀치

0개의 댓글