def solution(array, n):
array.sort()
sub_array = []
for i in range(len(array)):
sub_array.append(abs(n - array[i]))
return array[sub_array.index(min(sub_array))]
🤔 문제 풀이
- array.sort()
- 문제에서 "정렬된" 매개변수가 주어진다 하진 않았으니까 정렬부터 해줄게요
- sub_array = []
- n과의 차이를 구한 결괏값을 담는 객체를 만들어줄게요
- for i in range(len(array)):
- 이번에도 인덱스 형태로 뽑아낼게요
- sub_array.append(abs(n - array[i]))
- abs() 함수는 절대값을 뽑아내는 함수예요
- n에 array[i]번째 값을 뺀 절대값을 sub_array에 넣어줄게요
- return array[sub_array.index(min(sub_array))]
- min(sub_array) : 가장 작은 값
- sub_array.index(min(sub_array)) : sub_array에서 min(sub_array)인 값의 인덱스 번호를 찾는 거예요
- array[sub_array.index(min(sub_array))] 이제 그 결괏값의 인덱스 번호를 array에서 데리고 올게요
- 뭔 말인지 모르겠죠? 저도 그랬어요
array = [3, 10, 28]
sub_array = [17, 10, 8]
min(sub_array) == 8
sub_array.index(min(sub_array)) == sub_array.index(8) == 2
array[sub_array.index(min(sub_array))]
== array[sub_array.index(8)] == array[2] == 28
- 이렇게 되는 거예요!
실패 흔적들
1트
#1트
def solution(array, n):
answer = 0
sub_array = []
for i in range(len(array)):
sub_array += abs(n - array[i])
answer = max(array)
return answer
🤔 코드 풀이
- for i in range(len(array)):
sub_array += abs(n - array[i])- 이렇게 뺀 값을 새로운 객체에 넣을 생각이었는데, 생각해보니까 이건 연산자잖아요? 🙄
2트
#2트
def solution(array, n):
answer = 0
sub_array = []
for i in range(len(array)):
sub_array.append(abs(n - array[i]))
answer = min(sub_array)
return answer
🤔 코드 풀이
- 그래서 += 에서 .append()로 변경해주었어요
- 그리고, 생각해보니까 가장 가까운 값을 찾는 거잖아요
- 그래서 max가 아니라 min으로 변경해주었어요
- 코드 실행을 해보니까 딱 +n 만큼의 차이가 나더라구요
3트
#3트
def solution(array, n):
answer = 0
sub_array = []
for i in range(len(array)):
sub_array.append(abs(n - array[i]))
answer = min(sub_array) +n
return answer
🤔 코드 풀이
- 정확성이 떨어지는 거네요
- 생각해보니까 제일 작은 값에서 n 만큼 더한 식이었더라구요 ㅋㅋㅋㅋㅋㅋㅋ
4트
# 4트
def solution(array, n):
answer = 0
sub_array = []
for i in range(len(array)):
sub_array.append(abs(n - array[i]))
answer = array[sub_array.index(min(sub_array))]
return answer
🤔 코드 풀이
- answer = array[sub_array.index(min(sub_array))]
- sub_array에서 가장 작은 값의 인덱스를 array에서 뽑아내요
- 하지만 제출 후 채점하기에서 틀렸쮸?
5트
#5트
def solution(array, n):
sub_array = []
for i in range(len(array)):
sub_array.append(abs(n - array[i])) # abs(n - array[i])의 결괏값을 그대로 객체에 추가
return array[sub_array.index(min(sub_array))]
🤔 코드 풀이
- 조건이 하나 더 필요해 보여요
- 근데 어떤 경우에서 오류가 난 건지 모르겠더라구요
- 튜터님께 달려갔어요
6트
#6트
def solution(array, n):
array.sort()
sub_array = []
for i in range(len(array)):
sub_array.append(abs(n - array[i])) # abs(n - array[i])의 결괏값을 그대로 객체에 추가
return array[sub_array.index(min(sub_array))]
🤔 코드 풀이
- 설마,, 정렬이 안 된 경우가 있어서 그런가? 하고
- array.sort() 이 문장을 추가해주니까
- 정답으로 뜨네요,,
- 13점 오르는 건 처음 본 거 같아요 와우.,
'문제 풀기 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 7의 개수 (+실패 흔적들, .count()) (0) | 2025.01.02 |
---|---|
[프로그래머스] 한 번만 등장한 문자 (+실패한 흔적, .count()) (1) | 2025.01.02 |
[프로그래머스] 숨어있는 숫자의 덧셈(2) (+ isdigit(), isalpha(), ''.join()), 1h (0) | 2024.12.31 |
[프로그래머스] 팩토리얼 (+실패흔적들, 1h) (1) | 2024.12.31 |
[프로그래머스] 모스부호(1) (0) | 2024.12.31 |