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점 오르는 건 처음 본 거 같아요 와우.,

+ Recent posts