[백준] 3135 : 라디오 - Python

Chooooo·2022년 9월 23일
0

알고리즘/백준

목록 보기
8/182
post-thumbnail

문제 해결
해당 문제는 그리디 알고리즘 문제로, 주어진 N개의 각 데이터와 목적지 B까지의 최소거리와 A->B까지의 거리를 비교하여 둘 중 더 작은 값을 채택하면 버튼 수의 최솟값을 얻어낼 수 있다.

생각
처음에 주어진 input은 모두 잘 출력되는데 문제는 틀렸다고 나와서 뭐가 틀렸는지 헤맸는데 생각해보니 A->B까지의 최솟값과 저장된 주파수->B까지 거리가 같은 경우 직행인 A->B를 채택했어야 헀다. 왜냐하면 A->지정된 주파수->B면 한번 더 버튼을 누르기에 같은 경우의 예외처리를 해줄 수 있었어야 했다!

문제 예외를 잘 생각하자. 범위 집중!

소스코드

import sys


A, B = map(int, input().split())
#A->B로 갈 때 눌러야 하는 가장 적은 버튼 수를 구하기
N = int(input()) #N개의 미리 지정된 주파수 입력
data=  []
for _ in range(N):
    data.append(int(input()))

#N개의 데이터와 목적지의 차이가 가장 적은 곳으로 이동 후 현재위치에서 이동하는 것과 비교하여 움직이면 될듯
temp = abs(A-B)
min_cha = 242424242424
for i in range(N):
    if abs(data[i] - B) < min_cha:
        min_cha = abs(data[i] - B)
        idx = i
#만약 A->B 값과 min_cha 값이 같은 경우 A->B를 채택했어야함. idx까지 가는데 1을 더해주므로!!!
if temp <= min_cha:  #그냥 이동하는게 더 가까운 경우   같은 경우 생각했어야했음
    print(abs(A-B))   #횟수
else:
    print(abs(B - data[idx]) + 1)
profile
back-end, 지속 성장 가능한 개발자를 향하여

0개의 댓글