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

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

by hwamgai 2026. 6. 7.

문제 : 홀수 vs 짝수

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

 

프로그래머스

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

programmers.co.kr

 

내 코드 : 

- 참일_경우_값 if 조건 else 거짓일_경우_값

def solution(num_list):
    a, b = 0, 0
    for i in range(len(num_list)):
        if i%2 == 0:
            a += num_list[i]
        else:
            b += num_list[i]
    return (a if a>b else b)

 

좋은 코드:

def solution(num_list):
    return max(sum(num_list[::2]), sum(num_list[1::2]))

 

 

 

 

문제 : 5명씩

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

 

프로그래머스

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

programmers.co.kr

내 코드 :

def solution(names):
    answer = []
    
    for i in range(len(names)):
        if i%5 == 0:
            answer.append(names[i])
    return answer

 

좋은 코드:

def solution(names):
    return names[::5]
def solution(names):
    answer1 = names[:1]
    answer2 = names[5:6]
    answer3 = names[10:11]
    answer4 = names[15:16]
    answer5 = names[20:21]
    answer6 = names[25:26]
    answer7 = names[30:31]
    answer = answer1 +answer2+answer3+answer4+answer5+answer6+answer7
    return answer

 

 

 

 

문제 : 할 일 목록

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

 

프로그래머스

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

programmers.co.kr

내 코드:

def solution(todo_list, finished):
    answer = []
    
    for i in range(len(todo_list)):
        if finished[i] == False:
            answer.append(todo_list[i])
    return answer

좋은 코드:

def solution(todo_list, finished):
    return [work for idx, work in enumerate(todo_list) if not finished[idx]]
def solution(todo_list, finished):
    return [x for x, b in zip(todo_list, finished) if not b]

 

 

 

 

문제 : n보다 커질 때까지 더하기

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

 

프로그래머스

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

programmers.co.kr

내 코드:

def solution(numbers, n):
    answer = 0
    i = 0
    
    while answer <= n:
        answer += numbers[i]
        i += 1
        
    return answer

* 참고 : i를 선언하면 변수가 메모리에 하나 더 만들어져서 for문이 좋다는 의견이 있지만, for문을 써도 동적 메모리 할당이 되니, 가독성 측명으로 for문이 더 좋다는 대댓글이 있었다.

 

좋은 코드:

def solution(numbers, n):
    return next(sum(numbers[:i + 1]) for i in range(len(numbers)) if sum(numbers[:i + 1]) > n)

 

 

 

 

문제 : 수열과 구간 쿼리1

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

 

프로그래머스

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

programmers.co.kr

 

내 코드:

- 🤖 문제의 규칙
쿼리가 [s, e]로 주어지면, arr의 인덱스가 s 이상 e 이하인 자리에 있는 숫자들을 전부 1씩 더하라는 뜻입니다.
입출력 예시 진행 과정 (arr = [0, 1, 2, 3, 4])
첫 번째 쿼리 [0, 1]인덱스 0부터 1까지의 값을 1씩 더합니다.arr[0]과 arr[1]의 값이 변경됩니다.결과: [1, 2, 2, 3, 4]
def solution(arr, queries):
    answer = arr
    
    for i in range(len(queries)):
        for j in range(queries[i][0],queries[i][1]+1):
            answer[j] += 1
    return answer

 

좋은 코드 :

def solution(arr, queries):
    for (s, e) in queries:
        arr = [a+1 if s <= i <= e else a for i, a in enumerate(arr)]
    return arr
def solution(arr, queries):
    for l,r in queries:
        for i in range(l,r+1): arr[i]+=1
    return arr