[python] programmers (기초) 리스트 문제 모음

도리·2025년 3월 27일

할 일 목록

  • 왜 []?

def solution(todo_list, finished):
    answer = []
    # finished가 false인 것만 출력하기 
    for i in range(len(finished)):
        if finished[i] == 'false':
            answer.append(todo_list[i])
    return answer
  • 'false'가 문제 / finished가 boolean 함수였음.
def solution(todo_list, finished):
    answer = []
    # finished가 true인 것만 출력하기 
    for i in range(len(finished)):
        if finished[i] == False :
            answer.append(todo_list[i])

    return answer

순서바꾸기

  • 하나의 케이스에서 런타임 에러가 났다.
def solution(num_list, n):
    answer = []
    left = num_list[:n]
    right = num_list[n+1:]
    answer.append(num_list[n])
    num_list.remove(num_list[n])
    
    answer += right
    answer += left
    
    return answer
  • 다른코드 .. 흠 굳이 안나눠도 될듯.
def solution(num_list, n):    
return num_list[n:] + num_list[:n]

첫 번째로 나오는 음수

  • 내 코드
    하나의 테스트 케이스에서 실패함. ㅠ

    아하!! 인덱스가 0일때도 -1가 되어버리는군........

def solution(num_list):
    answer = 0
    # 첫번째로 나오는 음수의 인덱스 리턴!
    
    for i in range(len(num_list)):
        if num_list[i] <0:
            answer = i
            break
    if answer == 0:
        answer = -1
    return answer
  • 다른 코드
def solution(num_list):
    for index, num in enumerate(num_list):
        if num < 0:
            return index
    else:
        return -1

enumerate()

  • 객체 순회하면서 인덱스와 값 함께 반환.
for index, value in enumerate(iterable, start=0):...

start=1 이렇게 값 지정하면 1부터 시작할 수도 있음.

배열만들기 1

  • 내 코드
    또 테스트 케이스 하나가 틀림 ㅋㅋ ㅠ n대신에 n//k+1 로 바꿔주면 된다.
def solution(n, k):
    answer = [] # k배수 오름차순으로 저장. 
    num = k 
    for i in range(1,n): 
        if num <= n :
            answer.append(num)
            num = k * (i+1)
        
    return answer
  • 다른 코드
    리스트 컴프리헨션 [i for i in .. if ...]
def solution(n, k):
    return [i for i in range(1, n+1) if i % k == 0]

빈 배열에 추가/삭제

def solution(arr, flag):
    answer = []  # true면 뒤에 arr[i]를 arr[i]*2번 추가. 
                    # false면 arr[i]개 삭제
    for i in range(len(flag)):
        if flag[i]== True:
            for j in range(arr[i]):
                answer.append(arr[i])
                answer.append(arr[i])
        else:
            for j in range(arr[i]):
                answer.pop()
    return answer

⭐️ 글자 지우기 ⭐️

수열과 구간 쿼리1

  • 테케만 맞고 채점 다 틀렸었다
  • 구간안에 모든 값 +1 해야했음.
def solution(arr, queries):
    answer = [] # queries 구간에 있는 값에 +1
    
    for i in queries:
        a = i[0]
        b = i[1]
        for j in range(a,b+1):
            arr[j] += 1
    return arr

1로 만들기

조건에 맞게 수열 변환하기 2

  • 이전 버전의 arr와 같을 때 종료시키려고 했음.
  • 복사버전 (코드) 일치하는지 확인 후 answer+=1
def solution(arr):
    answer = 0 #원소 값이 50 크거나 같은 짝수면 2 나누고, 50보다 작은 홀수면 2곱하고 +1
    
    while(True):
        arr_2 = arr[:] # 복사 
        
        for j in range(len(arr)):
            if (arr[j]>=50) and (arr[j]%2==0):
                arr[j] = arr[j]//2
            elif (arr[j]<50) and (arr[j]%2==1):
                arr[j] = arr[j]*2 +1
            else:
                pass
        
        if (arr_2 == arr):
            break
        else:
            answer+=1
            
    return answer

<내 코드.>

def solution(str_list):
    answer = [] # u,d,i,r // i가 먼저 나오면 왼쪽. 
                      #   // r가 먼저 나오면 오른쪽. 

    if "l"or"r" not in str_list: ## <<<< 이 조건절이 잘못됨 
        answer = []
    elif (str_list.index("l")<str_list.index("r")):
        answer = str_list[:str_list.index("l")]
    elif (str_list.index("l")>str_list.index("r")):
        answer = str_list[str_list.index("r")+1:]
    return answer
  • 1.if "l" or "r" not in str_list : 대신 if "l" not in str_list and "r" not in str_list:라고 해야함.
    1. l,r 둘중 하나가 없으면 elif 안의 조건절에서 valueerror 가 뜨게 됨.

<다른 코드.>

  • 아오
def solution(str_list):
    
    for i in range(len(str_list)):
        if str_list[i] == "l":
            return str_list[:i]
        elif str_list[i] == "r":
            return str_list[i+1:]
    
    return []
  • 순회 돌려서 둘 중 먼저나오는 값에 따라서 return 값을 만들어주면 된담.
profile
인공지능응용학과 졸업예정..

0개의 댓글