728x90

https://programmers.co.kr/learn/courses/30/lessons/86491

출처 : 프로그래머스

 

코딩테스트 연습 - 최소직사각형

[[10, 7], [12, 3], [8, 15], [14, 7], [5, 15]] 120 [[14, 4], [19, 6], [6, 16], [18, 7], [7, 11]] 133

programmers.co.kr


def solution(sizes):
    answer = 0
    w = max(max(x) for x in sizes)
    h = max(min(x) for x in sizes)
    answer = w*h
    return answer

 

728x90

https://programmers.co.kr/learn/courses/30/lessons/12901

출처 : 프로그래머스

 

코딩테스트 연습 - 2016년

2016년 1월 1일은 금요일입니다. 2016년 a월 b일은 무슨 요일일까요? 두 수 a ,b를 입력받아 2016년 a월 b일이 무슨 요일인지 리턴하는 함수, solution을 완성하세요. 요일의 이름은 일요일부터 토요일까

programmers.co.kr


def solution(a, b):
    answer = ''
    d_31 = [1,3,5,7,8,10,12]
    d_30 = [4,6,9,11]
    d_29 = [2]
    day = ['SUN','MON','TUE','WED','THU','FRI','SAT']
    start = 5
    tmp = 0
    for ai in range(1,a):
        if ai in d_31:
            tmp += 31
        if ai in d_30:
            tmp += 30
        if ai in d_29:
            tmp += 29
    tmp += b
    tmp -= 1
    answer = day[(start + (tmp % 7))%7]
    
    return answer

풀이

말그래도 구현했다...

윤년은 4년마다 돌아오는 2월이 29일까지 있는 해이다..!!

728x90

https://programmers.co.kr/learn/courses/30/lessons/68644

출처 : 프로그래머스

 

코딩테스트 연습 - 두 개 뽑아서 더하기

정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요. 제한

programmers.co.kr

from itertools import combinations
def solution(numbers):
    answer = []
    tmp = list(combinations(numbers,2))
    for t in tmp:
        answer.append(sum(t))
    answer = list(set(answer))
    answer.sort()
    return answer
728x90

https://programmers.co.kr/learn/courses/30/lessons/68935

출처 : 프로그래머스

 

코딩테스트 연습 - 3진법 뒤집기

자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요. 제한사항 n은 1 이상 100,000,000 이하인 자연수

programmers.co.kr


def solution(n):
    answer = 0
    tmp = []
    
    while True:
        tmp.append(n % 3)
        n //= 3
        if n == 0:
            break       
            
    idx = 0  
    for t in tmp[::-1]:
        if t == 0:
            idx += 1
            continue
        answer += t*(3**idx)
        idx += 1
        
    return answer

풀이

3으로 나눈 나머지로 3진법을 구하는 방법으로 구했다.

하지만 다른 사람 풀이를 보고 놀랐다..ㅋ ㅋ ...

def solution(n):
    tmp = ''
    
    while True:
        tmp += str(n % 3)
        n //= 3
        if n == 0:
            break
            
    answer = int(tmp,3)
    return answer

풀이

int('문자열', 진법)

솔직히 int가 이런 옵션이 있는줄 몰랐다.

앞으로 진법문제 나올 때 유용하게 쓰자.

728x90

https://programmers.co.kr/learn/courses/30/lessons/77884

출처 : 프로그래머스

 

코딩테스트 연습 - 약수의 개수와 덧셈

두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주

programmers.co.kr


def solution(left, right):
    answer = 0
    for i in range(left,right+1):
        cnt = 0 # 약수 개수 카운트
        for j in range(1,i+1):
            if i % j == 0: # 약수면
                cnt += 1
        if cnt % 2 == 0: # 약수 개수가 짝수면 더하고
            answer += i
        else: # 약수 개수가 홀수면 빼기
            answer -= i
    return answer

풀이

left부터 right까지 하나씩 약수의 개수를 구한다.

약수의 개수가 짝수면 answer 에 더해주고

약수의 개수가 홀수면 answer 에서 빼준다.

728x90

https://programmers.co.kr/learn/courses/30/lessons/12912

출처 : 프로그래머스

 

코딩테스트 연습 - 두 정수 사이의 합

두 정수 a, b가 주어졌을 때 a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수, solution을 완성하세요. 예를 들어 a = 3, b = 5인 경우, 3 + 4 + 5 = 12이므로 12를 리턴합니다. 제한 조건 a와 b가 같은 경우

programmers.co.kr


풀이 1

def solution(a, b):
    answer = 0
    if a<=b:
        answer = sum(range(a,b+1))
    else:
        answer = sum(range(b,a+1))
    return answer

풀이 2

def solution(a, b):
    answer = (abs(a-b)+1)*(a+b)//2
    return answer

 

수열에서 합 공식을 사용하면 된다.

n(a+l)//2 -> n 은 항 개수, a는 첫 항, l은 마지막 항

728x90

https://programmers.co.kr/learn/courses/30/lessons/1845

출처 : 프로그래머스

 

코딩테스트 연습 - 폰켓몬

당신은 폰켓몬을 잡기 위한 오랜 여행 끝에, 홍 박사님의 연구실에 도착했습니다. 홍 박사님은 당신에게 자신의 연구실에 있는 총 N 마리의 폰켓몬 중에서 N/2마리를 가져가도 좋다고 했습니다.

programmers.co.kr


def solution(nums):
    answer = 0
    n = len(nums)//2
    set_n = len(list(set(nums)))

    if n > set_n:
        answer = set_n
    else:
        answer = n
    return answer

풀이

nums//2 가 set(nums)의 길이보다 크면 set(nums)

작으면 nums//2가 되어야한다.

이는 주어진 테스트케이스를 손코딩해보면 알 수 있다.

+ Recent posts