Notice
Recent Posts
Recent Comments
Link
나의 개발일지
[프로그래머스] Lv.0 가까운 수 [Python, 파이썬] 본문
나의 풀이
def solution(array, n):
array.append(n)
array.sort()
if n == array[-1] :
return array[-2]
elif n == array[0] :
return array[1]
else :
if array[array.index(n)+1] - array[array.index(n)-1] == 2:
return array[array.index(n)-1]
else :
if array[array.index(n)] - array[array.index(n)-1] > array[array.index(n)+1] - array[array.index(n)] :
return array[array.index(n)+1]
else :
return array[array.index(n)-1]
간단 설명
array = [15, 10, 11, 17]
n = 16 일때
- array에 n을 append → [15, 10, 11, 17, 16]
- array를 sort로 오름차순 정렬 → [10, 11, 15, 16, 17]
- if 문 : n(16)이 array의 가장 뒤에 있으면 가장 뒤에서 두 번째 요소를 리턴
- elif 문 : n(16)이 array의 가장 처음에 있으면 가장 처음에서 두 번째 요소를 리턴
- else 문 :
- if 문 : n(16)이 지금 예제 처럼 [10, 11, 15, 16, 17] 끝이 아닌 요소들 사이에 위치하고 15, 17 둘 다 16과 가장 가까운 수 이므로 이럴 때는 더 작은 수인 15를 리턴, (양쪽의 큰 수(17)를 작은 수(15)로 뺐을 때 값이 2면 둘 다 16과 가장 가까운 수)
- else 문 :
- if 문 : n에서 왼쪽 값을 뺀 값 > 오른쪽 값에서 n을 뺀 값을 비교해서 왼쪽이 크면 오른쪽 값 리턴(뺀 값이 크다는 것은 n과 크기 차이가 더 크다는 것, 가까운 수가 아님)
- else 문 : 아니면 왼쪽 값 리턴
'프로그래머스' 카테고리의 다른 글
| [프로그래머스] Lv.1 K번째 수 [Python, 파이썬] (0) | 2023.02.16 |
|---|---|
| [프로그래머스] Lv.0 소인수분해 [Python, 파이썬] (0) | 2022.12.29 |
| [프로그래머스] Lv.0 공 던지기 [Python, 파이썬] (0) | 2022.12.27 |
| [프로그래머스] Lv.0 숨어있는 숫자의 덧셈 (2) [Python, 파이썬] (0) | 2022.12.27 |
| [프로그래머스] Lv.0 옹알이 (1) [Python, 파이썬] (1) | 2022.12.22 |
Comments