728x90
반응형
문제 출처 :https://school.programmers.co.kr/learn/courses/30/lessons/120876?language=python3
풀이:
from collections import defaultdict
from itertools import combinations
def solution(lines):
_list = [ sorted(pos) for pos in lines]
lis = list(combinations(lines,2))
spot = []
for a,b in lis:
spot.append([max(a[0], b[0]) , min(a[1],b[1])])
if len(spot) <= 1:
return 0
pos_space = defaultdict(int)
for pos in lines:
for _pos in range(pos[0], pos[1]+1):
pos_space[_pos] += 1
overlap = [ k for k,v in pos_space.items() if v >= 2]
if len(overlap) <= 2:
return 0
if len(overlap) != overlap[-1] - overlap[0] + 1:
result = []
for i in range(overlap[0], overlap[-1]+1 ):
result.append(i)
return len(overlap) - (len(result)-len(overlap))
if len(overlap) >= 2:
return overlap[-1] - overlap[0]
else:
return 0
1,2,5,7 테스트케이스가 틀림
비슷한 문제를 백준 골드,플레에서 본거같은데,,
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])
진짜 놀랍다,, 감탄만 나온다
더 열심히 공부해야겠다
출처: 프로그래머스 조동건
반응형
댓글