본문 바로가기
개발/문제풀이

프로그래머스 '겹치는 선분의 길이' 파이썬 풀이

by beomcoder 2023. 2. 16.
728x90
반응형
 

프로그래머스

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

programmers.co.kr

 

"""
선분 3개가 평행하게 놓여 있습니다. 
세 선분의 시작과 끝 좌표가 [[start, end], [start, end], [start, end]] 형태로
들어있는 2차원 배열 lines가 매개변수로 주어질 때, 
두 개 이상의 선분이 겹치는 부분의 길이를 return 하도록 solution 함수를 완성해보세요.
"""

# 나는 다른 사람들과 다르게 접근을 이상하게 했다.
# 점과 점 사이에 0.5 부분을 체크하여 숫자를 세주는 방식으로 풀었다.
# 0.5의 소수를 표현하기 싫어서 *10을 해줘 for문을 돌렸다.
# 마지막으로 리턴을 해줄때는 0.5의 부분이 아닌 곳은 제외하고 더해주었다.

def solution(lines):
    total = {}
    for line in lines:
        start, end = line
        for i in range(start*10+5, end*10, 5):
            if i in total.keys():
                total[i] = 1
            else:
                total[i] = 0
    return sum([v for k,v in total.items() if k%10!=0])
728x90
반응형

댓글