[Python] 코딩테스트 연습 Lv2

NAYOUNG KIM·2023년 10월 16일
0

코딩테스트

목록 보기
9/13
post-thumbnail
# 1.짝지어 제거하기
def solution(s):
    stack = []
    for i in s:
        if len(stack) == 0:
            stack.append(i)
        elif stack[-1] == i:
            stack.pop()
        else:
            stack.append(i)     
    answer = 1 if len(stack) == 0 else 0
    return answer

# 2.JadenCase 문자열 만들기
def solution(s):
    answer = ''
    for i in s.lower().split(' '):
        answer += i.capitalize() + ' '
    return answer[:-1]

# 3.다음 큰 숫자
def to_2_num(n): # 2진수로 만드는 함수
    n_2 = ''
    while n != 0:
        n_2 += str(n % 2)
        n = n // 2
    return n_2

def solution(n):
    answer = 0
    n_2 = to_2_num(n)  # n의 2진수

    for i in range(n+1, 1000001):
        i_2 = to_2_num(i)
        if n_2.count('1') == i_2.count('1'):
            answer = i
            break
    return answer

# 4.카펫
def solution(brown, yellow):
    answer = []
    yellow_x = 0
    yellow_y = 0  
    for i in range(1, yellow+1):
        if yellow % i == 0:
            yellow_x = int(yellow/i)
            yellow_y = i
            if yellow_x*2 + yellow_y*2 + 4 == brown:
                answer = [yellow_x+2, yellow_y+2]
                break
    return answer
    
# 5.최댓값과 최솟값
def solution(s):
    nums_int = list(map(int, s.split(' ')))
    answer = str(min(nums_int)) + ' ' + str(max(nums_int))
    return answer
    
# 6.최솟값 만들기
def solution(A,B):
    answer = 0
    A.sort()
    B.sort(reverse=True)
    
    for i in range(len(A)):
        answer += A[i] * B[i]
    return answer
    
# 7.올바른 괄호
def solution(s):
    stack = []
    answer = True
    for i in s:
        if i == '(':
            stack.append(i)
        else:
            if len(stack) == 0:
                return False
            else:
                stack.pop()
    return stack == []
    
# 8.이진 변환 반복하기
def solution(s):
    zero_cnt = 0
    i = 0  
    while True:
        if s == '1':
            break
        zero_cnt += s.count('0')
        s = s.replace('0', '')
        s = bin(len(s))[2:] # 2진수 만들기
        i += 1
    return i, zero_cnt
    
# 9.숫자의 표현
def solution(n):
    answer = 0
    for i in range(1, n+1):
        nums = []
        for j in range(i, n+1):
            nums.append(j)
            if sum(nums) == n:
                answer += 1
                break
            elif sum(nums) > n:
                break
    return answer
    
# 10.피보나치 수
def solution(n):
    answer = [0,1]
    for i in range(2, n+1):
        answer.append((answer[-1] + answer[-2]) % 1234567)
    return answer[-1]
    
# 11.영어 끝말잇기
def solution(n, words):
    for i in range(1, len(words)):
        if (words[i][0] != words[i-1][-1]) or (words[i] in words[:i]):
            return (i%n)+1, (i//n)+1
    return [0,0]
    
# 12.점프와 순간 이동
def solution(N):
    answer = 0
    while N > 0:
        answer += N % 2
        N //= 2
    return answer
    
# 13.

# 14.

profile
21세기 주인공

0개의 댓글