코딩테스트

코딩테스트 입문_겹치는 선분의 길이

끈끈 2023. 5. 3. 03:33

Lv. 0, 55%

 

https://school.programmers.co.kr/learn/courses/30/lessons/120876

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

내가 제출한 코드:

def solution(lines):
    answer = 0
    line1 = set(range(lines[0][0], lines[0][1]))
    line2 = set(range(lines[1][0], lines[1][1]))
    line3 = set(range(lines[2][0], lines[2][1]))

    answer = sorted(list(line1 & line2 | line1 & line3 | line2 & line3))

    return len(answer)

 

교집합과 합집합을 사용!

 


 

처음 작성한 코드:

def solution(lines):
    answer = 0
    line1 = set(list(range(lines[0][0], lines[0][1]+1)))
    line2 = set(list(range(lines[1][0], lines[1][1]+1)))
    line3 = set(list(range(lines[2][0], lines[2][1]+1)))

    if len(line1) == 1:
        line1 = set()
    if len(line2) == 1:
        line2 = set()
    if len(line3) == 1:
        line3 = set()

    answer = sorted(list(line1 & line2 | line1 & line3 | line2 & line3))

    length = 0
    for i in range(len(answer)-1):
        if answer[i] == answer[i+1]-1:
            length += 1
    return length

 

range()가 문제였다

 

range()에서 +1을 지워주니 잡다한 친구들이 다 필요가 없어졌다! 후

 

set() 함수를 list로 해야하는 줄 알았는데 아니었다

 


 

비슷한 다른 분의 코드:

def solution(lines):
    sets = [set(range(min(l), max(l))) for l in lines]
    return len(sets[0] & sets[1] | sets[0] & sets[2] | sets[1] & sets[2])