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

카테부 4기 판교 ai 실무프로그래머스 코딩 기초 트레이닝 Day21

by hwamgai 2026. 6. 15.

문제: 뒤에서 5등 위로

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

 

프로그래머스

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

programmers.co.kr

내 코드:

def solution(num_list):
    answer = []
    num_list = sorted(num_list)
    answer = num_list[5:]
    return answer

좋은코드:

def solution(num_list):
    return sorted(num_list)[5:]

 

 

 

 

 

문제: 전국 대회 선발 고사

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

 

프로그래머스

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

programmers.co.kr

내 코드:

def solution(rank, attendance):
    answer = 0
    list = []
    
    for i in range(len(rank)):
        if attendance[i] == True:
            list.append([rank[i],i])
    

    list = sorted(list)
    # print(list[0][1], list[1][1], list[2][1])
    
    answer = 10000*list[0][1] + 100*list[1][1]  +list[2][1] 
    

    return answer

좋은코드:

def solution(rank, attendance):
    arr = sorted([(x, i) for i, x in enumerate(rank) if attendance[i]])
    return arr[0][1] * 10000 + arr[1][1] * 100 + arr[2][1]
def solution(rank, attendance):
    selected = []
    for i, attend in enumerate(attendance):
        if attend:
            selected.append((rank[i], i))

    selected.sort()
    a, b, c = selected[:3]

    return 10000 * a[1] + 100 * b[1] + c[1]

🤖 제미나이 코드 :

배열 선언 없이 

def solution(rank, attendance):
    answer = 0
    match_count = 0  # 선발된 학생 수 (총 3명까지)
    weight = 10000   # 첫 번째 학생은 10000, 두 번째는 100, 세 번째는 1을 곱하기 위한 가중치
    
    # 1등부터 마지막 등수까지 차례대로 확인합니다.
    # rank.index(current_rank)를 하면 해당 등수를 가진 '학생 번호(인덱스)'를 바로 찾을 수 있습니다.
    for current_rank in range(1, len(rank) + 1):
        # 현재 등수를 가진 학생의 번호(인덱스) 찾기
        student_idx = rank.index(current_rank)
        
        # 그 학생이 참석 가능하다면!
        if attendance[student_idx]:
            # 배열에 넣지 않고, 즉시 계산해서 answer에 더해줍니다.
            answer += student_idx * weight
            match_count += 1
            weight //= 100  # 다음 학생을 위해 가중치를 10000 -> 100 -> 1로 줄입니다.
            
        # 3명을 모두 뽑았다면 더 이상 반복할 필요가 없으므로 종료합니다.
        if match_count == 3:
            break
            
    return answer

 

 

 

 

 

문제: 정수 부분

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

 

프로그래머스

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

programmers.co.kr

내 코드:

def solution(flo):
    return int(flo)

좋은 코드:

def solution(flo):
    return flo//1
def solution(flo):
    ans=str(flo).split(".")[0]
    return int(ans)
import math 
def solution(flo):
    answer = math.floor(flo)
    return answer

 

 

 

 

 

문제: 문자열 정수의 합

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

 

프로그래머스

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

programmers.co.kr

내 코드:

def solution(num_str):
    answer = 0
    
    for i in range(len(num_str)):
        answer += int(num_str[i])
    return answer

좋은 코드:

def solution(num_str):
    return sum(map(int, list(num_str)))
solution=lambda s:sum(map(int,s))
def solution(num_str):
    return sum([int(i) for i in num_str])

 

 

 

 

 

문제: 문자열을 정수로 변환하기

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

 

프로그래머스

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

programmers.co.kr

내 코드:

def solution(n_str):
    return int(n_str)

 

좋은코드:

solution = lambda x : int(x)