코딩테스트

[26.01.23 코테(Python/MySQL)]-최소직사각형&오랜 기간 보호한 동물(2)

지니248 2026. 1. 23. 15:30

Lv1. 최소직사각형 (Python)

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

 

내가 작성한 코드

def solution(sizes):
    max_w = 0 # 명함들의 긴 변 중 최댓값 (가로)
    max_h = 0 # 명함들의 짧은 변 중 최댓값 (세로)
    
    for w, h in sizes: # 각 명함들의 가로, 세로를 하나씩 확인
        big = max(w,h) # 현재 명함의 긴 변
        small = min(w,h) # 현재 명함의 짧은 변
        
        max_w = max(max_w, big) # 지금까지의 최대 가로 길이(max_w)와 현재 명함의 긴 변(big)중 더 큰값을 max_w에 저장
        max_h = max(max_h, small) 
        
    return max_w * max_h # 가로 * 세로

 

새로 배운 코드

def solution(sizes):
    return max(max(x) for x in sizes) * max(min(x) for x in sizes)
# max(x): 긴 변
# min(x): 짧은 변
# max(max(x)..): 모든 명함의 긴 변 중 최댓값 -> 지갑의 가로 
# min(min(x)..): 모든 명함의 짧은 변 중 최댓값 -> 지갑의 세로

Lv3. 오랜 기간 보호한 동물(2) (MySQL)

링크: https://school.programmers.co.kr/learn/courses/30/lessons/59411

 

내가 작성한 코드

-- DATEDIFF
SELECT O.ANIMAL_ID, O.NAME
FROM ANIMAL_INS I
JOIN ANIMAL_OUTS O
  ON I.ANIMAL_ID = O.ANIMAL_ID
ORDER BY DATEDIFF(O.DATETIME, I.DATETIME) DESC
LIMIT 2

-- TIMESTAMPDIFF
SELECT O.ANIMAL_ID, O.NAME
FROM ANIMAL_INS I
JOIN ANIMAL_OUTS O
  ON I.ANIMAL_ID = O.ANIMAL_ID
ORDER BY TIMESTAMPDIFF(DAY, I.DATETIME, O.DATETIME) DESC
LIMIT 2

 

DATEDIFF(종료날짜, 시작날짜)

  • 일(day) 단위 차이만 계산
  • 시간(HH:MM:SS)은 무시
  • 간단하고 빠르다
  • ex) 며칠 차이인지 계산할 때
    DATEDIFF('2017-01-10', '2016-01-27') = 349

TIMESTAMPDIFF(단위, 시작날짜, 종료날짜)

  • 단위 지정 가능 (SECOND,MINUTE, HOUR, DAY, MONTH, YEAR)
  • 시간까지 정확히 반영함
  • ex) 기간을 계산할 때
    TIMESTAMPDIFF(DAY, '2016-01-27 12:27:00', '2017-01-10 10:44:00')