겹치는 선분의 길이 - Python

2023. 10. 1. 22:09공부/📝 프로그래머스

def solution(lines):
    temp = []
    temp2 = []
    for item in lines:
        for i in range(item[0], item[1]):
            if i + 0.5 in temp:
                if i + 0.5 not in temp2:
                    temp2.append(i + 0.5)
            else:
                temp.append(i + 0.5)
    return len(temp2)


# Test Cases
print(solution([[0, 1], [2, 5], [3, 9]]))
print("=" * 50)
print(solution([[-1, 1], [1, 3], [3, 9]]))
print("=" * 50)
print(solution([[0, 5], [3, 9], [1, 10]]))
print("=" * 50)

  set() 없이 풀었습니다.

 


def solution(lines):
    s1 = set(i for i in range(lines[0][0], lines[0][1]))
    s2 = set(i for i in range(lines[1][0], lines[1][1]))
    s3 = set(i for i in range(lines[2][0], lines[2][1]))
    return len((s1 & s2) | (s2 & s3) | (s1 & s3))

  저가 푼 건 아니고, set()을 이용한 풀이입니다.

 


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])

  위의 풀이를 더 간략하게 만든 풀이를 발견했습니다. 잘하네요.

 


 

프로그래머스

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

programmers.co.kr

 

'공부 > 📝 프로그래머스' 카테고리의 다른 글

평행 - Python  (0) 2023.10.02
옹알이 (1) - Python  (0) 2023.10.02
안전지대 - Python  (0) 2023.10.01
연속된 수의 합 - Python  (0) 2023.10.01
다음에 올 숫자 - Python  (0) 2023.10.01