728x90
https://www.acmicpc.net/problem/3135
22/09/17
단순하게 생각하면 쉽게 풀리는 문제로, 티어를 끈다면 조금 당황할 수도 있을 문제라고 생각한다.
문제 접근 방식:
내가 왜 당황할 수도 있는 문제라고 이야기했냐면, 이 문제는 그리디적 사고를 해야 풀리는 문제이기 때문이다.
버튼을 누르는 방법은 3가지가 있다. 주파수를 하나 올리거나, 내리거나, 즐겨찾기가 돼있는 주파수로 이동하거나.
당연히 최대한 적게 버튼을 누르려면 즐겨찾기가 되있는 주파수를 많이 누르는 게 더 이득이다.
만약 즐겨찾기가 되있는 주파수가 현재 주파수와 차이가 난다면, 주파수가 하나 이상 차이가 나기 때문이다.
그래서 나는 내가 돌리고 싶어 하는 최종 주파수(B)에 제일 가까운 즐겨찾기 주파수로 간 뒤에 하나씩 올리거나 내리는 방식을 취했다.
한편, 처음 주파수(A)에서 최종 주파수(B)로 그냥 하나씩 올리거나 내리는 게 더 좋은 선택일 수 있으므로 (예를 들어, A = 1, B = 2, 즐겨찾기 주파수는 3), 둘 중 min값을 취해주도록 구현하였다.
아래는 내가 위의 접근 방식과 같이 작성한 파이썬 코드이다. 더보기를 누르면 확인할 수 있다.
더보기
# 3115번 라디오
# 구현
A, B = map(int, input().split())
N = int(input())
stared = [int(input()) for _ in range(N)]
min_value = min(abs(A - B), min(abs(i - B) for i in stared)+1)
print(min_value)
'알고리즘 > 백준 문제 풀이' 카테고리의 다른 글
[Python] 1932번 정수 삼각형 (0) | 2022.10.12 |
---|---|
[Python] 25625번 샤틀버스 (0) | 2022.10.11 |
[Python] 2407번 조합 (0) | 2022.10.11 |
[Python] 11660번 구간 합 구하기 5 (0) | 2022.10.11 |
[Python] 1417번 국회의원 선거 (0) | 2022.10.11 |