기본기 다지기/코테 오답노트

[프로그래머스] 겹치는 선분의 길이 (파이썬)

syveany 2025. 2. 24. 12:00

[문제]

겹치는 선분의 길이를 구하는 문제였다.

입출력 예는 아래와 같다.

정답률 60% 문제였다.

lines result
[[0,1],[2,5],[3.9]] 2
[[-1,1],[1,3],[3,9]] 0
[[0,5],[3,9],[1,10]] 8

 

[풀이 방법]

1. a,b값이 -100이상 100이하이기 때문에, 냅다 [0]으로 구성된 리스트 lst를 만들어줬다.

 

2. 그 다음에 각각의 선분에 대해서 for문을 적용해서 돌려줬다.

 

3. for문 안에 for문을 또 넣어서 a(line[0])와 b(line[1]) 사이의 모든 값에 해당하는 lst의 인덱스에 +1을 하도록 했다.

 

4. 겹치는 부분의 길이를 구하기 위해서, lst 중 값이 2 이상인 부분의 개수를 세어주었다.

 

5. 세어준 개수가 답!

 

[코드]

def solution(lines):
    answer = 0
    lst = [0] * 201
    for line in lines:
        for i in range(line[0], line[1]):
            lst[i+100] += 1
    for i in lst:
        if i >= 2:
            answer += 1
    return answer

 

[교훈]

직관적으로 한스텝 한스텝씩 코드를 치자. 그래야 테스트케이스를 다 통과하기가 수월하다.