본문 바로가기

Python(알고리즘,문제풀이)/프로그래머스(코딩기초트레이닝)

코딩기초트레이닝 / 가까운 1찾기

728x90

📚문제

출처 : 프로그래머스(https://school.programmers.co.kr/learn/courses/30/lessons/181898)

 

📝풀이

def solution(arr, idx):
    result = 0
    for i in range(idx,len(arr)):
        if arr[i] ==1:
            result += i
            return result
    return -1 if result ==0 else result

--------------------------------------

def solution(arr, idx):
    result = 0
    for i in range(idx,len(arr)):
        if arr[i] ==1:
            result += i
            break
    return -1 if result ==0 else result

둘다 내가 푼거긴 한데 

왜 아래는 정답이 안될까? 

이론상으로는 문제가 없어 보이는데 흠

 

아!!

만약 i가 0일 때 (idx가 0일때) 1이 나온다면

result 에 0이 추가된 다음 break되고

for 문을 빠져나와서

그 다음은 result가 0이므로 -1을 리턴한다

깨달았다...

 

그러면 위 코드도 똑같은거 아닌가 하고 생각할 수 있지만

위 코드는 i=0을 result에 추가한 뒤에 result(0)값을 리턴하기 때문에 

-1을 리턴하는 아래코드와 다르다

 

 

+ 좀 더 간단히 생각하는 습관을 가져보자..^^

def solution(arr, idx):
    for i in range(idx, len(arr)):
        if arr[i] == 1:
            return i
    return -1
728x90