코딩테스트

[26.01.22 코테(Python/MySQL)]-크기가 작은 부분 문자열&취소되지 않은 진료 예약 조회하기

지니248 2026. 1. 22. 13:36

Lv1. 크기가 작은 부분 문자열 (Python)

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

 

내가 작성한 코드

def solution(t, p):
    answer = 0
    
    for i in range(len(t) - len(p) + 1): # p길이만큼 자를 수 있는 시작 위치에서 부분 문자열을 하나씩 오른쪽으로 이동시키며 확인
        sub = t[i : i + len(p)] # i위치에서 시작해 p와 같은 길이의 부분 문자열을 생성
        
        if int(sub) <= int(p): # 부분 문자열이 나타내는 수가 p가 나타내는 수보다 작거나 같다면
            answer += 1 # 조건 만족하는 부분 문자열의 개수 증가
            
    return answer

Lv4. 취소되지 않은 진료 예약 조회하기 (MySQL)

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

 

내가 작성한 코드

SELECT A.APNT_NO, P.PT_NAME, A.PT_NO, A.MCDP_CD, D.DR_NAME, A.APNT_YMD
FROM PATIENT P
JOIN APPOINTMENT A 
  ON P.PT_NO = A.PT_NO
JOIN DOCTOR D
  ON D.DR_ID = A.MDDR_ID
WHERE A.MCDP_CD = 'CS' AND A.APNT_CNCL_YN = 'N' 
  AND A.APNT_YMD >= '2022-04-13 00:00:00' AND A.APNT_YMD < '2022-04-14 00:00:00'
ORDER BY A.APNT_YMD

 

BETWEEN을 사용하지 않은 이유

  • APNT_YMD는 TIMESTAMP 타입으로 초 단위뿐 아니라 마이크로초까지 저장될 수 있음
  • BETWEEN은 양 끝 값을 모두 포함하므로 
  • BETWEEN '2022-04-13 00:00:00' AND '2022-04-13 23:59:59' 를 사용하면 23:59:59 이후의 마이크로초 값이 존재할 경우 해당 데이터가 누락될 수 있음
  • 따라서 하루 전체 데이터를 안전하게 조회하기 위해 시작 지점은 포함(>=), 다음 날 0시는 제외(<)하는 구간 방식 사용
  • 마이크로초 유무와 관계 없이 정확히 하루 범위 조회 가능