티스토리 뷰

문제 설명

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

lines가 [[0, 2], [-3, -1], [-2, 1]]일 때 그림으로 나타내면 다음과 같습니다.

선분이 두 개 이상 겹친 곳은 [-2, -1], [0, 1]로 길이 2만큼 겹쳐있습니다.


제한사항

  • lines의 길이 = 3
  • lines의 원소의 길이 = 2
  • 모든 선분은 길이가 1 이상입니다.
  • lines의 원소는 [a, b] 형태이며, a, b는 각각 선분의 양 끝점 입니다.
    • -100 ≤ a < b ≤ 100

입출력 예


 

하 .. 오늘따라 입문 문제가 잘 안풀린다. 

이 문제는 처음 풀었던 코드는 없고, 바로 답부터 보여주겠다. 

 

def solution(lines):
    d = {}
    for i in lines:
        for r in range(i[0],i[1]):
            if r in d:
                d[r] += 1
            else:
                d[r] = 1
    answer = 0 
    for k ,v in d.items():
        if v >= 2:
            answer += 1
    return answer

 

어떤 사람의 답을 참고하여 만들었다. 딕셔너리를 활용한 문제인데, 각 지점 별로 포함된 개수를 딕셔너리로 넣어서 2이상인 경우 겹치는 것으로 간주하고 개수를 세는 과정이다. 요런 생각이 왜 난 안날까 ... 

 

끝 !

 

 

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/03   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
글 보관함