안녕하세요. 이번 포스팅에서는 Py.CheckiO 의 Elementary 레벨에 있는 Nearest Value 문제풀이를 해보겠습니다.
주의:
제 답이 최고/최적화된 답이 아닐 수 있으며, 해결하는 것에만 집중한 답이기 때문에 좀 더 나은 방법이나 해석이 있으시다면 댓글 부탁드립니다.
0. Nearest Value 문제 내용
Elementary level에서 13번째 문제인 Nearest Value 문제입니다.
한 개의 정수 set와 다른 한 정수를 비교해가면서 set의 정수와 주어진 정수의 차가 제일 작을 때(절대값이 작을 때)를 찾는 문제네요.
(4, 7, 10, 11, 12, 17)의 set와 정수 9가 주어질 때,
절대값을 구하는 함수 abs()를 사용하여 순서대로 차를 구하면
abs(4-9) = 5
abs(7-9) = 2
abs(10-9) = 1
abs(11-9) = 2
abs(12-9) = 3
abs(17-9) = 8
이 중에서 가장 차이가 작을 때는 list의 정수가 10일 때이므로 답은 10입니다.
여기서 몇몇 추가사항이 'A few clarifications'에 들어가게 되는데
가장 중요한 지점은 만약에 차이가 가장 작은 수가 2개 이상 나올 때, 그 순간의 list의 정수끼리 비교해서 작은 값을 답으로 내야한다는 점입니다.
1. Nearest Value 문제풀이
입력되는 정수의 set는 values
입력되는 비교를 위한 정수는 one
의 변수에 각각 저장됩니다.
정수끼리의 차를 구할 땐 abs() 함수를 사용해서 절대값을 이용해서 비교를 하게됩니다.
기준점을 정하고 abs() 함수를 사용 값들끼리 계속 비교해 나가면서 더 작은 값이 있으면 그 작은 값을 기준점으로 바꿔나가면서 비교를 이어나갑니다.
abs()로 구하는 값들을 val 값에 저장하여 비교해 나갑니다.
만약 abs()로 구한 값이 더 작은 값일 경우 -> abs(i-one)<val
다음 비교를 위한 기준값에 그 작은 값이 대입되고 -> val=abs(i-one)
그 당시의 set에 있던 정수가 nearest_val 변수에 저장됩니다. -> nearest_val = i
우리가 찾는 정답으로 사용되는 값은 nearest_val 변수에 들어갑니다.
본 포스팅의 내용 및 이미지를 무단 전재, 재배포 또는 복사를 금지합니다.
인용 시 출처와 같이 공개해주세요!
도움이 되셨다면 댓글 또는 공감 부탁드립니다!
댓글