본문 바로가기
  • think together
카테부 4기 판교 ai 실무/코테 공부

프로그래머스 코딩 기초 트레이닝 Day7

by hwamgai 2026. 5. 19.

문제 : 수열과 구간 쿼리 4

https://school.programmers.co.kr/learn/courses/30/lessons/181922

 

코딩테스트 연습 - 수열과 구간 쿼리 4

알고리즘 문제 연습 카카오톡 친구해요! 프로그래머스 교육 카카오 채널을 만들었어요. 여기를 눌러, 친구 추가를 해주세요. 신규 교육 과정 소식은 물론 다양한 이벤트 소식을 가장 먼저 알려

school.programmers.co.kr

 

내 코드

#제미나이 - 문제를 이해하지 못해서 내가 이해한대로 설명 후 확인
def solution(arr, queries):
    answer = arr

    for i in range(len(queries)) :
        for j in range(queries[i][0], queries[i][1]+1):
            if j%queries[i][2] == 0 :
                answer[j] += 1
    return answer

 

좋은 코드

def solution(arr, queries):
    for s, e, k in queries:
        for i in range(s, e+1):
            if i%k == 0:
                arr[i] += 1
    return arr

 

 

 

문제 : 배열 만들기2

https://school.programmers.co.kr/learn/courses/30/lessons/181921

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

내 코드 

def solution(l, r):
    answer = []
    
    for i in range(l,r+1) :  
        check = 1
        for j in str(i) :
        	#제미나이 - 조건문이 or이 아니라 and임을 확인
            if j != '5' and j != '0' :
                check = 0
                break
    
        if check == 1 :
            answer.append(int(i))
        
    if len(answer) == 0 :
        answer.append(-1)
            
    return answer

 

좋은 코드 

#시간이 적게 든다

def solution(l, r):
    answer = []
    n = [5,50,55,500,505,550,555,5000,5005,5050,5055,5500,5505,5550,5555,50000,50005,50050,50055,50500,50505,50550,50555,55000,55005,55050,55055,55500,55505,55550,55555,500000,500005,500050,500055,500500,500505,500550,500555,505000,505005,505050,505055,505500,505505,505550,505555,550000,550005,550050,550055,550500,550505,550550,550555,555000,555005,555050,555055,555500,555505,555550,555555]
    for i in n:
        if i >= l and i <= r:
            answer.append(i)
    if answer == []:
        answer.append(-1)
    return answer

 

 

 

문제 : 카운트 업

https://school.programmers.co.kr/learn/courses/30/lessons/181920

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

내 코드

def solution(start_num, end_num):
    answer = []
    
    for i in range(start_num, end_num+1) :
        answer.append(i)
    return answer

 

좋은 코드

def solution(start, end):
    return list(range(start, end + 1))
def solution(start, end):
    return [i for i in range(start,end+1)]

 

 

 

문제 : 콜라츠 수열 만들기

https://school.programmers.co.kr/learn/courses/30/lessons/181919

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

내 코드

def solution(n):
    answer = []
    answer.append(n)
    
    while True :
        if n%2 == 0 :
            answer.append(n/2)
            n = n/2
        else :
            answer.append(3*n+1)
            n = 3*n+1
        
        if n == 1 : break
    
    return answer

 

좋은 코드

def solution(n):
    answer = [n]
    while n > 1:
        if n % 2 == 0:
            n //= 2
        else:
            n = 3 * n + 1
        answer.append(n)
    return answer

 

 

 

문제 : 배열 만들기 4

https://school.programmers.co.kr/learn/courses/30/lessons/181918

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

내 코드 :

def solution(arr):
    stk = []
    i = 0
    
    while True :
        if len(stk) == 0 :
            stk.append(arr[i])
            i += 1
        else :
            if stk[-1] < arr[i] :
                stk.append(arr[i])
                i += 1
            else :
                stk.pop()
        
        #제미나이 도움 - 언제 while 문을 끝내야할지 헷갈렸다
        #while true & 조건문 걸기보단 처음부터 while i < len(arr) 를 했으면 됐다
        if i >= len(arr):
            break
                
    return stk

 

좋은 코드

def solution(arr):
    stk = []
    for i in range(len(arr)):
        while stk and stk[-1] >= arr[i]:
            stk.pop()
        stk.append(arr[i])
    return stk