코딩 테스트/프로그래머스

[Python] 프로그래머스 lv.0 2의 영역

위시리 2024. 10. 29. 19:21

 

문제 분석

  • 정수 배열  arr
  • 배열 안의 2가 모두 포함된 가장 작은 연속된 부분 배열을 return
  • arr에 2가 없으면 -1 return

 

코드 설계

  • 배열의 값을 하나씩 확인하면서 2가 저장되어 있는 배열 확인
  • max, min 인덱스를 찾아서 해당 부분의 배열 값만 slice하여 return 

 

정답 코드

def solution(arr):
    answer = []
    for a in range(len(arr)) : 
        if arr[a] == 2 :
            answer.append(a)
    if len(answer) != 0 : 
        return arr[min(answer) : max(answer)+1]
    else : 
        return [-1]

 

다른 사람 코드 1

def solution(arr) :
    if 2 not in arr :
        return [-1]
    return arr[arr.index(2) : len(arr) - arr[::-1].index(2)]
  • arr[::-1] : 문자열 거꾸로 출력

 

다른 사람 코드 2

def solution(arr) :
    check = []
    if 2 not in arr : 
        return [-1]
    else : 
        for i in range(0, len(arr)) : 
            if arr[i] == 2 : 
                check.append(i)
    return arr[check[0] : check[-1] + 1]