Language/Python
[코드트리 챌린지] 4주차 - K개 중 하나를 N번 선택하기(Simple)
yuwoo
2023. 10. 1. 11:36
최고기록 달성!!
많이는 아니지만 Backtracking 문제를 몇 문제 풀었더니,
실력 진단 테스트를 하면서 그동안 막혔던 Backtracking 문제를 잘 풀 수 있었다.ㅎㅎ
dp에 대한 학습이 더 필요하다고 나왔다.
그렇긴 하지만 아직 Backtrackin, DFS, BFS 문제들을 다 풀어서 완벽하게 하고,
dp를 학습할 계획이다.
겹치지 않게 선분 고르기
코드트리 | 코딩테스트 준비를 위한 알고리즘 정석
국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요.
www.codetree.ai
고민은 좀 한 문제지만 1시간 반 안에 넉넉히 풀 수 있는 문제인 것 같다.
아래는 본인이 작성한 테스트케이스를 통과한 정답 코드이다.
n = int(input())
lines = []
for _ in range(n):
x1, x2 = map(int, input().split())
lines.append([x1, x2])
def selectMaxLine(selectedLines, i):
global maxCnt
if len(selectedLines) > maxCnt:
maxCnt = len(selectedLines)
if i >= n:
return
isOverlap = False
for line in selectedLines:
if (line[0] <= lines[i][0] and lines[i][0] <= line[1]) or (line[0] <= lines[i][1] and lines[i][1] <= line[1]) or (lines[i][0] < line[0] and lines[i][1] > line[1]):
isOverlap = True
break
if not isOverlap:
selectMaxLine(selectedLines + [lines[i]], i+1)
selectMaxLine(selectedLines, i+1)
maxCnt = 0
selectMaxLine([], 0)
print(maxCnt)