코딩테스트

[26.01.19 코테(Python/MySQL)]-최대공약수와 최소공배수&중성화 여부 파악하기

지니248 2026. 1. 19. 17:14

Lv1. 최대공약수와 최소공배수 (Python)

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

 

내가 작성한 코드

def solution(n, m):
    gcd = 0 # 최대공약수 저장할 변수
    
    for i in range(1, min(n, m) + 1): # 1부터 n과 m 중 작은 수까지 하나씩 i에 넣어서 반복
        if n % i == 0 and m % i == 0: # i로 n과 m을 나눴을 때 모두 나머지가 0이면 i는 n과 m의 공약수
            gcd = i # i는 지금까지 발견한 공약수 중 가장 큰 값이므로 max_divisor를 i로 계속 갱신
            
    lcm = (n * m) // gcd
    # 최소공배수 계산
    # (n * m)을 최대공약수로 나눈 몫은 최소공배수
    
    return [gcd, lcm]

 

새로 배운 코드

def solution(n, m):
    x, y = max(n, m), min(n, m) # n과 m 중 큰 값을 x, 작은 값을 y에 저장
    
    # y가 0이 될 때까지 반복
    # y는 나머지를 의미, 나머지가 0이 되면 종료
    while y != 0:
        x, y = y, x % y
        # 유클리드 호제법
        # gcd(x, y) = gcd(y, x%y)이므로
        # (x, y)를 (y, x%y)로 갱신
    
    gcd = x # 반복이 끝났을 때 x에는 최대공약수가 저장
    lcm = (n * m) // gcd

    return [gcd, lcm]

Lv2. 중성화 여부 파악하기 (MySQL)

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

 

내가 작성한 코드

SELECT ANIMAL_ID
       ,NAME
       ,CASE WHEN SEX_UPON_INTAKE LIKE 'Neutered%' OR SEX_UPON_INTAKE LIKE 'Spayed%' 
        THEN 'O' ELSE 'X' END AS '중성화'
FROM ANIMAL_INS
ORDER BY ANIMAL_ID;