알고리즘 정복하기!/백준 문제풀이

백준 3135번 Python / Greedy

by seokii 2022. 2. 19.
728x90
반응형

문제 링크

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

 

3135번: 라디오

첫 줄엔 정수 A와 B가 주어진다 (1 ≤ A, B < 1000, A ≠ B). 다음 줄엔 정수 N이 주어진다 (1 ≤ N ≤ 5). 다음 N개의 줄엔 미리 지정되어 있는 주파수가 주어진다 (주파수는 1000 보다 작다).

www.acmicpc.net

 

풀이

a,b = map(int, input().split())
n = int(input())
favorites = []
for _ in range(n):
    favorites.append(int(input()))

how_many1 = []
how_many2 = []
how_many1.append(abs(a-b))

for i in range(len(favorites)):
    how_many2.append(abs(favorites[i] - b))

if min(how_many1) <= min(how_many2):
    print(min(how_many1))
else: print(min(how_many2)+1)

how_many1 변수는 단순히 +1 혹은 -1 버튼만을 눌러 원하는 주파수로 갔을 때의 누른 횟수입니다.

a와 b의 차를 abs() 함수로 절댓값 처리를 해주었습니다.

 

how_many2 변수는 즐겨찾기 버튼을 이용해 원하는 주파수로 갔을 때의 누른 횟수입니다.

리스트를 순회하며 각 즐겨찾기 버튼을 눌렀을 때의 횟수를 저장했습니다.

 

if문을 사용해 가장 최적의 횟수를 출력했습니다.

다만, 즐겨찾기 버튼을 사용할 경우에는 즐겨찾기 버튼을 누른 1회를 추가했습니다.

 

 

728x90
반응형

'알고리즘 정복하기! > 백준 문제풀이' 카테고리의 다른 글

백준 16435번 Python / Greedy  (0) 2022.02.25
백준 1343번 Python / Greedy  (0) 2022.02.21
백준 2407번 Python / Math  (0) 2022.02.18
백준 1246 Python / Greedy  (0) 2022.02.17
백준 1629번 Python / Math  (0) 2022.02.17

댓글