티스토리 뷰

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

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

2차원 배열 lines가 매개변수로 주어질 때, 2개 이상의 선분이 겹치는 부분의 길이를 구하는 문제

 

Test Case 1) lines = [[-3,-1], [-2, 1], [0, 2]]일 때, 선분이 2개 이상 겹친 곳은 [-2,-1], [0,1]로 길이 2 반환

 

Test Case 2) lines = [[-1,1], [1,3], [3,9]]일 때, 선분이 2개 이상 겹친 곳은 없으므로 길이 0을 반환

 

Solution) 겹치는 선분의 길이를 구하는 문제지만, 겹치는 점의 개수를 구하는 방향으로 풀어보기

Test Case 1에서 겹치는 점은 -2, 0 => answer = 2

  1. 2차원으로 되어 있는 매개변수를 1차원으로 변환 => [[-3,-1], [-2, 1], [0, 2]] =>  [-3, -2, -2, -1, 0, 0, 1]
  2. Counter 라이브러리를 통해 각 점의 빈도수 확인 => {0: 2, -2: 2, 1:1, -3:1, -1:1}
  3. 빈도 수가 2 이상인 점의 개수를 반환 (점 0과 점 -2)
from collections import Counter

def solution(lines):
    answer=0
    temp, temp1, temp2 = [],[],[]
    for idx in range(len(lines)):
        for x in range(lines[idx][0], lines[idx][-1]):
            temp.append(x)
    dic1 = Counter(temp)
    for k, v in dic1.items():
        if v>=2:
            answer+=1
    return answer
TAG more
글 보관함
최근에 올라온 글