[TIL] 99클럽 코테 스터디 18일차 TIL - 그리디: <백준 2212 센서> 문제 풀이 with python

2024. 11. 15. 10:29·Algorithm

Today's keyword : 

 

 

📌 문제설명

https://www.acmicpc.net/problem/2212

센서 문제는 입력으로 센서의 개수와 집중국의 개수, 센서의 위치가 주어지면 모든 센서가 통신 가능하도록 하는 집중국의 수신 가능 영역 거리의 합 중 최소값을 찾는 문제입니다. 

📌 문제풀이

집중국의 수신 가능 영역의 거리의 합을 계산하는 과정을 첫 번째 예시로 그림으로 그려보면 다음과 같습니다. 
센서는 총 6개가 주어지며, 각 센서의 위치는 다음과 같이 주어졌을 때, 센서가 모두 통신할 수 있는 집중국의 위치를 생각해보면 1번처럼 첫번째 센서만 커버하는 집중국 하나와 나머지 센서를 커버하는 집중국으로 분리할 수도 있고, 2번처럼 앞에 있는 4개 센서와 뒤에 있는 2개 있는 센서를 묶을 수도 있습니다. 하지만 두 센서가 커버하는 거리의 합을 최소화해야 하므로, 3번처럼 센서들을 구분할 때 멀리 떨어져 있는 센서들을 다른 그룹으로 묶이도록 해야 합니다. 

 

이를 코드로 구현하면, 센서 간 거리를 계산하고 집중국의 개수-1만큼 반복문을 돌면서 거리가 떨어져 있는 거리들을 순차적으로 제거하면 됩니다. 

n = int(input())  # 센서 개수
k = int(input())  # 집중국 개수
sensor = list(map(int, input().split()))  # 센서 위치 입력

# 예외 처리: 센서 수가 집중국 수보다 적거나 같은 경우
if k >= n:
    print(0)  # 각 센서에 집중국을 설치하면 수신 범위가 0
else:
    sensor.sort()  # 센서 위치 정렬
    # 인접 센서 간의 거리 계산
    distance = [sensor[i+1] - sensor[i] for i in range(n - 1)]
    
    # 내림차순으로 정렬 후, 가장 큰 거리 k-1개를 제거
    distance.sort(reverse=True)
    for i in range(k - 1):
        distance.pop(0)
    
    # 남은 거리의 합이 최소 수신 범위
    print(sum(distance))

 

  1. 센서 위치 정렬: 센서 좌표를 오름차순으로 정렬합니다. 정렬된 상태에서 센서 간 거리를 계산하면 쉽게 각 센서 간의 간격을 구할 수 있습니다.
  2. 센서 간 거리 계산: 정렬된 센서 간의 거리를 계산하여 distance 리스트에 저장합니다. 이 리스트는 센서가 인접한 거리 간격을 나타냅니다.
  3. 가장 긴 k-1개의 거리 제거: 집중국이 k개라면 센서를 k개의 구간으로 분리할 수 있습니다. 따라서, 센서 간 거리 중 가장 긴 k-1개의 구간을 제거하면 집중국 간의 수신 거리를 최소화할 수 있습니다.
  4. 남은 거리의 합계 계산: 가장 긴 k-1개의 거리를 제거한 후 남은 거리의 합을 구하면 최소 수신 거리가 됩니다.
  5. 예외 처리: k >= n인 경우에는 센서가 각 집중국에 하나씩 분리되므로 수신 범위가 0이 됩니다.

 

 

📌 오늘의 회고 

문제 이해가 어려웠다..

 

 

 

#99클럽 #코딩테스트준비 #개발자취업 #항해99 #TIL

'Algorithm' 카테고리의 다른 글

코드트리 X 글또 블로그 챌린지 참여 후기 : 코테 준비 끝판왕 플랫폼 '코드트리'  (0) 2025.02.09
[TIL] 99클럽 코테 스터디 16일차 TIL - <그리디: 백준 2847 게임을 만든 동준이 > 문제 풀이 with python  (0) 2024.11.13
[TIL] 99클럽 코테 스터디 15일차 TIL - 그리디: <백준 13417 카드문자열>문제 풀이 with python  (0) 2024.11.12
[TIL] 99클럽 코테 스터디 14일차 TIL - 그리디 : <백준 14916 거스름돈> 문제 풀이 with python  (1) 2024.11.10
<백준 17070 : 파이프 옮기기 1 > 문제풀이 with python  (2) 2024.11.10
'Algorithm' 카테고리의 다른 글
  • 코드트리 X 글또 블로그 챌린지 참여 후기 : 코테 준비 끝판왕 플랫폼 '코드트리'
  • [TIL] 99클럽 코테 스터디 16일차 TIL - <그리디: 백준 2847 게임을 만든 동준이 > 문제 풀이 with python
  • [TIL] 99클럽 코테 스터디 15일차 TIL - 그리디: <백준 13417 카드문자열>문제 풀이 with python
  • [TIL] 99클럽 코테 스터디 14일차 TIL - 그리디 : <백준 14916 거스름돈> 문제 풀이 with python
데이by데이
데이by데이
  • 데이by데이
    Carpe Diem
    데이by데이
  • 전체
    오늘
    어제
    • 분류 전체보기 (42) N
      • AI (5)
      • 데이터분석 (5)
      • MLOps (2)
      • 프로젝트 (2)
      • Personal (5) N
      • Algorithm (12)
      • TIL (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    회고
    데이터시각화
    change point detection
    변화점찾기
    2024 회고
    인과발견
    오블완
    지수표현변환
    AI
    시계열데이터분석
    causal discovery
    Python
    개발책추천
    ai대학원진학
    더나은프로그래머되는법
    유전알고리즘예제
    최적화알고리즘
    티스토리챌린지
    numpy
    pc알고리즘
    구간분할
    과학적표기법
    유전알고리즘개념
    change point analysis
    Rag
    2025 다짐
    맹그로브고성
    LLM
    이상탐지
    #99클럽 #코딩테스트준비 #개발자취업 #항해99 #til
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
데이by데이
[TIL] 99클럽 코테 스터디 18일차 TIL - 그리디: <백준 2212 센서> 문제 풀이 with python
상단으로

티스토리툴바