코딩테스트

[26.01.26 코테(Python/MySQL/Oracle)]-시저 암호&진료과별 총 예약 횟수 출력하기

지니248 2026. 1. 26. 21:27

Lv1. 시저 암호 (Python)

링크: https://school.programmers.co.kr/learn/courses/30/lessons/12926?language=python3

 

내가 작성한 코드

# 파이썬 내장함수
# 문자 -> 숫자: ord()
# 숫자 -> 문자: chr()

def solution(s, n):
    answer = ''
    
    for ch in s:
        if ch == " ":
            answer += " "
        elif ch.islower():
            answer += chr((ord(ch) - ord('a') + n) % 26 + ord('a'))
            # ord(ch): 현재 문자를 숫자로 바꿈 (ex: 'a'-> 97, 'b'-> 98, .., 'z'-> 122)
            # ord('a'): 소문자 알파벳의 시작 기준점 (숫자 97)
            # ord(ch) - ord('a'): ch가 'a'에서부터 몇 번째 위치인지 계산
            # + n: 알파벳을 n만큼 오른쪽으로 민다
            # % 26: 알파벳의 개수는 총 26개로, z를 넘어가면 다시 a부터 세기 위해 나머지 연산 사용함
            # + ord('a'): 0~25의 숫자 범위를 다시 문자 코드 영역으로 되돌림
            # chr(..): 계산된 숫자를 다시 문자로 변환
        elif ch.isupper():
            answer += chr((ord(ch) - ord('A') + n) % 26 + ord('A'))
    return answer

Lv2. 진료과별 총 예약 횟수 출력하기 (MySQL)

링크: https://school.programmers.co.kr/learn/courses/30/lessons/132202?language=oracle

 

내가 작성한 코드

-- MySQL
-- 풀이1: 날짜 범위 비교
SELECT MCDP_CD AS '진료과코드', COUNT(APNT_NO) AS '5월예약건수'
FROM APPOINTMENT 
WHERE APNT_YMD >= '2022-05-01' AND APNT_YMD < '2022-06-01'
GROUP BY MCDP_CD
ORDER BY COUNT(APNT_NO) ASC, MCDP_CD ASC;

-- 풀이2: YEAR/MONTH 사용
SELECT MCDP_CD AS '진료과코드', COUNT(APNT_NO) AS '5월예약건수'
FROM APPOINTMENT
WHERE YEAR(APNT_YMD) = 2022 AND MONTH(APNT_YMD) = 5
GROUP BY MCDP_CD
ORDER BY COUNT(APNT_NO) ASC, MCDP_CD ASC;

-- 풀이3: DATE_FORMAT 사용
SELECT MCDP_CD AS '진료과코드', COUNT(APNT_NO) AS '5월예약건수'
FROM APPOINTMENT
WHERE DATE_FORMAT(APNT_YMD, '%Y-%m') = '2022-05'
GROUP BY MCDP_CD
ORDER BY COUNT(APNT_NO) ASC, MCDP_CD ASC;

 

ORACLE

-- ORACLE
-- 풀이1: 날짜 범위 비교
SELECT MCDP_CD AS "진료과코드", COUNT(APNT_NO) AS "5월예약건수"
FROM APPOINTMENT 
WHERE APNT_YMD >= DATE '2022-05-01' AND APNT_YMD < DATE '2022-06-01'
GROUP BY MCDP_CD
ORDER BY COUNT(APNT_NO) ASC, MCDP_CD ASC;

-- 풀이2: YYYY/MM 연/월 분리
SELECT MCDP_CD AS "진료과코드", COUNT(APNT_NO) AS "5월예약건수"
FROM APPOINTMENT 
WHERE TO_CHAR(APNT_YMD, 'YYYY') = '2022' AND TO_CHAR(APNT_YMD, 'MM') = '05'
GROUP BY MCDP_CD
ORDER BY COUNT(APNT_NO) ASC, MCDP_CD ASC;

-- 풀이3: TO_CHAR 사용
SELECT MCDP_CD AS "진료과코드", COUNT(APNT_NO) AS "5월예약건수"
FROM APPOINTMENT 
WHERE TO_CHAR(APNT_YMD, 'YYYY-MM') = '2022-05'
GROUP BY MCDP_CD
ORDER BY COUNT(APNT_NO) ASC, MCDP_CD ASC;