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

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

by hwamgai 2026. 6. 18.

문제 : 커피심부름

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

 

코딩테스트 연습 - 커피 심부름

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

school.programmers.co.kr

 

내 코드:

def solution(order):
    answer = 0
    
    for i in order:
        if 'latte' in i:
            answer += 5000
        elif 'americano' in i:
            answer += 4500
        else:
            answer += 4500
            
    return answer

 

좋은 코드:

def solution(order):
    answer = 0
    for want in order:
        if 'latte' in want:
            answer += 500
        answer += 4500

    return answer
def solution(order):
    return sum([5000 if "cafelatte" in i else 4500 for i in order])

 

 

 

 

문제: 그림확대

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

 

프로그래머스

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

programmers.co.kr

내 코드:

def solution(picture, k):
    answer = []
    pic_list = ''
    
    for i in range(len(picture)):
        for j in range(len(picture[i])):
            pic_list += (picture[i][j]) * k
        for q in range(k):
            answer.append(pic_list)
        pic_list = ''
    return answer

 

같은 코드 다른 방법:

def solution(picture, k):
    answer = []
    pic_list = ''
    
    for i in range(len(picture)):
        for j in range(len(picture[i])):
            pic_list += (picture[i][j]) * k

        answer += [pic_list] * k
        pic_list = ''
    return answer

 

좋은 코드:

def solution(picture, k):
    answer = []
    for i in range(len(picture)):
        for _ in range(k):
            answer.append(picture[i].replace('.', '.' * k).replace('x', 'x' * k))
    return answer
def solution(picture, k):

    answer = []

    for i in range(len(picture)):
        answer += [picture[i].replace('.', '.'*k).replace('x', 'x'*k)] * k

    return answer

 

 

 

 

문제: 조건에 맞게 수열 변환하기 3

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

 

프로그래머스

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

programmers.co.kr

내 코드:

파이썬 마법의 한 줄: 리스트 컴프리헨션 (추천)
# [ 변형할계산식 for 꺼낸원소 in 리스트 ]
# 예시: arr의 모든 원소에 k를 더하고 싶을 때 [x + k for x in arr]
# 예시: arr의 모든 원소에 k를 곱하고 싶을 때 [x * k for x in arr]
					#TypeError: can only concatenate list (not "int") to list
def solution(arr, k):
    answer = []
    if k%2 == 0:
        answer = [i + k for i in arr]	#원래 answer = arr + k 를 했는데 에러
    else:
        answer = [i * k for i in arr]	#원래 answer = arr * k 를 했는데 에러
    return answer

 

좋은 코드:

def solution(arr, k):
    return [i*k if k%2!=0 else i+k for i in arr]
def solution(arr, k):
    if k % 2 != 0:
        return list(map(lambda x: x * k, arr))

    return list(map(lambda x: x + k, arr))
def solution(arr, k):
    answer = []
    if k %2 !=0:
        for i in arr:
            answer.append(k*i)
    else:
        for i in arr:
            answer.append(i+k)
    return answer

 

 

 

 

문제: i로 만들기

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

 

프로그래머스

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

programmers.co.kr

내 코드:

리스트 컴프리헨션 조건문
numbers = [1, 2, 3, 4, 5]
# i가 짝수면 'Even'을 넣고, 아니면 i 그대로 넣어라
result = ['Even' if i % 2 == 0 else i for i in numbers]
# 출력 결과: [1, 'Even', 3, 'Even', 5]
리스트를 문자열로
# 예시 my_list = ['a', 'b', 'c'] # 빈 문자열("")을 기준으로 리스트의 요소들을 합칩니다.
result = "".join(my_list)
# 출력 결과: "abc"
def solution(myString):
    answer = ['l' if i < 'l' else i  for i in myString]
    return ''.join(answer)

좋은 코드:

def solution(myString):
    return myString.translate(str.maketrans('abcdefghijk', 'lllllllllll'))
def solution(myString):
    answer = ''
    for i in myString:
        if i < "l":
            answer+='l'
        else: 
            answer+=i
    return answer
def solution(myString):
    return ''.join(['l' if ord(i) < ord('l') else i for i in myString])

 

 

 

 

 

문제: 특별한 2차원 배열1

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

 

프로그래머스

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

programmers.co.kr

내 코드:

결과값 맨 앞에 자꾸 빈 []이 들어가있는 이유:
answer [[]]로 선언해놔서.
[[]] : "빈 리스트([])"라는 원소를 하나 가지고 있는 리스트입니다. (이미 상자가 하나 들어있는 상태예요!)

이 상태에서 아래 for 문을 돌며 answer.append(n_list)를 하니까,
기존에 들어있던 빈 리스트 뒤에 새로 만든 행들이 붙으면서 결과가 이렇게 나온 것입니다.
시작 상태: [[]]
1번째 반복 후: [[], [1, 0, 0]]
2번째 반복 후:[[], [1, 0, 0], [0, 1, 0]]
...
def solution(n):
    answer = []
    n_list = []
    
    for i in range(n):
        for j in range(n):
            if i == j:  
                n_list.append(1)
            else:
                n_list.append(0)
        
        answer.append(n_list)
        n_list = []
    return answer

 

🤖제미나이 방법:

def solution(n):
    # 맨 앞에 빈 배열 하나를 품고 시작합니다. -> [[]]
    answer = [[]]
    n_list = []
    
    for i in range(n):
        for j in range(n):
            if i == j:  
                n_list.append(1)
            else:
                n_list.append(0)
        
        # [핵심] 맨 처음 행(i가 0일 때)은 append하지 않고 0번째 자리에 그대로 대입!
        if i == 0:
            answer[0] = n_list
        else:
            answer.append(n_list)
            
        n_list = []
        
    return answer
def solution(n):
    # n의 크기만큼 빈 배열들을 미리 만들어둡니다. (예: n=3이면 [[], [], []])
    answer = [[] for _ in range(n)]
    
    for i in range(n):
        for j in range(n):
            if i == j:  
                # i번째 층(행)에 바로 1을 추가
                answer[i].append(1)
            else:
                # i번째 층(행)에 바로 0을 추가
                answer[i].append(0)
                
    return answer
def solution(n):
    return [[1 if i == j else 0 for j in range(n)] for i in range(n)]

 

좋은코드:

def solution(n):
    answer=[[0]*n for i in range(n)]
    for i in range(n): answer[i][i]=1
    return answer
def solution(n):
    return [[int(i==j) for i in range(n)] for j in range(n)]
def solution(n):
    answer = [[0]*n for _ in range(n)]
    for i in range(n):
        for j in range(n):
            if i==j:
                answer[i][j] += 1
                break
    return answer
def solution(n):
    answer = [[]]
    del answer[0]
    for i in range(n):
        answer.append(n*[0])

    for i in range(n):
        answer[i][i] = 1

    return answer