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

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

by hwamgai 2026. 6. 13.

문제 : 배열의 길이를 2의 거듭제곱으로 만들기

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

 

프로그래머스

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

programmers.co.kr

내 코드:

2의 거듭제곱은
def is_power_of_two(n): # n이 0보다 크고, n과 n-1의 비트 AND 연산 결과가 0인지 확인
return n > 0 and (n & (n - 1)) == 0 
answer.append(0) * a 대신
answer = answer + ([0] * a)
def solution(arr):
    answer = arr
    
    a = 1
    if not(len(arr) > 0 and (len(arr) & (len(arr)-1)) == 0) :
        for i in range(10):
            if len(arr) == 1:
                answer.append(0)
                return answer
            elif len(arr) > a:
                a = a *2
                
    a = a - len(arr)
    answer = answer + ([0] * a)
    return answer

좋은코드:

def solution(arr):
    a = 1
    b = len(arr)
    while a < b :
        a *= 2
    return arr + [0] * (a-b)

내가 너무 어렵게 생각했던 것 같다

def solution(arr):
    n = len(arr)
    if n & (n - 1) == 0: 
        return arr
    m = 1
    while m < n:
        m <<= 1
    return arr + [0] * (m - n)

 

 

 

 

문제: 배열 비교하기

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

 

프로그래머스

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

programmers.co.kr

내 코드:

배열 안에서 원소들의 합
sum(arr)
def solution(arr1, arr2):

    
    if len(arr1) < len(arr2) :
        return -1
    elif len(arr1) > len(arr2):
        return 1
    else:
        if sum(arr1) > sum(arr2):
            return 1
        elif sum(arr1) < sum(arr2):
            return -1
        else:
            return 0

좋은 코드:

def solution(arr1, arr2):
    return (len(arr1) > len(arr2)) - (len(arr2) > len(arr1)) or (sum(arr1) > sum(arr2)) - (sum(arr2) > sum(arr1))

 

 

 

 

문제 : 문자열 묶기

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

 

프로그래머스

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

programmers.co.kr

내 코드:

제미나이 힌트:
최대 문자열의 길이가 30까지이니, 0부터30, 즉 31 길이의 배열을 만들고 각 자리에
해당 길이가 나올 때마다 +1
def solution(strArr):
    answer = 0
    arr = [0] * 31
        
    for i in range(len(strArr)):
        arr[len(strArr[i])] += 1
        
            
    answer = max(arr)
    
    return answer

좋은 코드:

def solution(strArr):
    a=[0]*31
    for x in strArr: a[len(x)]+=1
    return max(a)
def solution(strArr):
    d = {}

    for i in strArr:
        d[len(i)] = d.get(len(i), 0) + 1

    return max(d.values())
def solution(strArr):
    w_len = [0 for _ in range(31)]
    for w in strArr:
        w_len[len(w)] += 1
    return max(w_len)

 

 

 

 

문제: 배열의 길이에 따라 다른 연산하기

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

 

프로그래머스

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

programmers.co.kr

내 코드:

def solution(arr, n):
    
    if len(arr)%2 == 0:
        for i in range(len(arr)):
            if i%2 != 0:
                arr[i] += n
    else:
        for i in range(len(arr)):
            if i%2 == 0:
                arr[i] += n
                
    return arr

좋은 코드:

def solution(arr, n):
    N=len(arr)
    if N%2:
        for i in range(0,N,2): arr[i]+=n
    else:
        for i in range(1,N,2): arr[i]+=n
    return arr

 

 

 

 

 

문제: 뒤에서 5등까지

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

 

프로그래머스

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

programmers.co.kr

내코드:

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