Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 넘파이 배열
- 파이썬
- 합성곱 신경망
- python
- 코드트리
- numpy 기초
- 네트워크 기초
- cpp
- 기계학습
- 디자인 패턴
- 데이터 마이닝
- 코딩테스트
- 코테
- 자바
- 코딩테스트실력진단
- lambda
- NumPy
- OOP
- ack
- Design Pattern
- c++
- 넘파이
- 넘파이 기초
- Machine Learning
- 차원축소
- 클러스터링
- 머신러닝
- 데이터 분석
- java
- cpp class
Archives
- Today
- Total
준비하는 대학생
[코드트리 챌린지] 3주차 - +1-1 Technique / 가장 많이 겹치는 구간 본문
https://www.codetree.ai/landing/level-test/6289/result/4?&utm_source=clipboard&utm_medium=text
코드트리 | 코딩테스트 준비를 위한 알고리즘 정석
국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요.
www.codetree.ai
문제 분석
문제는 여러 개의 구간이 주어졌을 때, 가장 많이 겹치는 부분에서 몇 개의 구간이 겹치는지를 찾는 것입니다. 간단한 예를 들면, 구간 [2, 16]과 [4, 6]은 4에서 6까지 겹칩니다. 이러한 방식으로 모든 구간들이 얼마나 겹치는지를 파악하고 가장 많이 겹치는 부분을 찾아야 합니다.
풀이 방법
- 각 구간의 시작점과 끝점을 점으로 생각합니다.
- 구간이 시작할 때마다 겹치는 구간의 수를 증가시키고 (1을 더하고), 구간이 끝날 때마다 감소시킵니다 (-1을 뺍니다).
- 이렇게 생성된 점들의 리스트를 정렬하여, 작은 점부터 큰 점 순서로 순회합니다.
- 정렬된 점들을 순회하면서 겹치는 구간의 수를 계산합니다.
- 가장 큰 겹치는 구간의 수를 출력합니다.
n = int(input())
lines = [tuple(map(int, input().split())) for _ in range(n)]
# 각 구간의 시작과 끝점을 나타내는 리스트를 생성합니다.
points = []
for start, end in lines:
points.append((start, 1)) # 시작점 (겹치는 구간 수 증가)
points.append((end, -1)) # 끝점 (겹치는 구간 수 감소)
# 점들을 정렬하여 순서대로 점검할 수 있게 합니다.
points.sort()
cnt = 0 # 현재 겹치는 구간의 수
max_cnt = 0 # 최대로 겹친 구간의 수
# 정렬된 점들을 순회하며 겹치는 구간의 수를 계산합니다.
for point, value in points:
cnt += value
max_cnt = max(cnt, max_cnt)
print(max_cnt)
코드 설명
- 먼저, 입력 받은 구간들을 기반으로 각 구간의 시작점과 끝점을 나타내는 points 리스트를 생성합니다.
- 시작점은 겹치는 구간의 수를 증가시키기 위해 1의 값을 가지고, 끝점은 겹치는 구간의 수를 감소시키기 위해 -1의 값을 가집니다.
- 점들을 순서대로 점검하기 위해 points 리스트를 정렬합니다.
- 정렬된 점들을 순회하며, 현재 겹치는 구간의 수(cnt)와 최대로 겹친 구간의 수(max_cnt)를 계산합니다.
- 결과적으로, max_cnt에 가장 많이 겹치는 구간의 수가 저장됩니다.
해당 방법을 통해 간단하게 가장 많이 겹치는 구간의 수를 구할 수 있습니다.
지난주보다 소폭 상승하였다. 이번주에는 공부를 많이 못한 만큼 발전이 적은 것 같다. 더 열심히 공부해야겠다.
'Algorithm > 코드트리 블로그 챌린지' 카테고리의 다른 글
[코드트리 챌린지] 5주차 - Parametric Search / 최소 통과 시간 (1) | 2023.10.07 |
---|---|
[코드트리 챌린지] 4주차 - 이진탐색 / 컴퓨터와 함께하는 숫자 게임 2 (0) | 2023.10.01 |
[코드트리 챌린지] 2주차 - HashMap / 원소의 합이 0 (0) | 2023.09.13 |
[코드트리 챌린지] 1주차 - 자리 수 단위로 완전탐색 / Carry 피하기 2 (0) | 2023.09.06 |
Comments