본문 바로가기
CS/알고리즘 & 문제풀이

[Python] 2212 센서

by mintropy 2022. 3. 25.

문제 링크 : https://www.acmicpc.net/problem/2212

 

2212번: 센서

첫째 줄에 센서의 개수 N(1 ≤ N ≤ 10,000), 둘째 줄에 집중국의 개수 K(1 ≤ K ≤ 1000)가 주어진다. 셋째 줄에는 N개의 센서의 좌표가 한 개의 정수로 N개 주어진다. 각 좌표 사이에는 빈 칸이 하나 있

www.acmicpc.net

 

1. 접근 방법

각 값이 아니라, 각 값의 차이 중 최솟값을 뽑아내는 그리디

 

2. 풀이 코드

🖥python 코드 링크 : https://github.com/mintropy/baekjoon_py/blob/master/2000/2200/2212.py

 

GitHub - mintropy/baekjoon_py: BOJ를 Python으로 해결한 코드의 저장소입니다.

BOJ를 Python으로 해결한 코드의 저장소입니다. Contribute to mintropy/baekjoon_py development by creating an account on GitHub.

github.com

📕코드 해설

리스트 컨프리헨션을 활용하여 최소한 간략하게 코드를 작성했다. 그 과정을 풀어쓰면 다음과 같다.

1) 중복 제거를 위한 set

2) 오름차순 정렬을 위한 sorted

3) 각 구간 차이를 구한 리스트

4) 구간 차이 오름차순 정렬

5) 구간 차이 중 K개를 제외한 나머지 선택하여 합으로 출력

 

3. 생각 정리

그리디도 여러 문제 종류가 있겠지만, 이러한 유형은 점점 익숙해지고, 의도하진 않았지만 숏 코딩과 같은 형식으로 푸는 게 더 익숙하고 편한 느낌이다.

댓글