본문 바로가기
TIL

본 캠프 8일차 TIL

by Data 학습자 2024. 7. 1.

TIL: Python 학습 내용 https://datalearn.tistory.com/40

오늘 학습한 내용: 숫자로 이루어진 문자열 t와 p가 주어질 때, t에서 p와 길이가 같은 부분 문자열 중에서, 이 부분 문자열이 나타내는 수가 p가 나타내는 수보다 작거나 같은 것이 나오는 횟수를 return하는 함수 solution을 완성하는 방법.

문제 예시:

  • t = "3141592"
  • p = "271"
  • 부분 문자열: 314, 141, 415, 159, 592
  • 271보다 작거나 같은 수: 141, 159 (2개)

문제 풀이 순서:

  1. p의 길이와 정수 값을 구하기
  2. 조건을 충족할 때 카운트한 값을 저장할 변수 작성하기
  3. 조건을 만족할 때까지 반복할 반복문 작성하기
  4. 조건 달성 여부를 판단할 조건문 작성하기
  5. 조건 달성할 때마다 카운트 횟수를 더하기
  6. 결과 출력하기

구체적 구현:

def solution(t, p):
    len_p = len(p)
    p_num = int(p)
    answer = 0

    for i in range(len(t) - len_p + 1):
        if int(t[i:i + len_p]) <= p_num:
            answer += 1
    
    return answer

 

오늘 배운 점:

  • 문제를 단계별로 해결하는 방법을 배웠다.
  • 한 번에 정답을 유추하기보다는 단계적으로 접근하는 것이 효과적임을 깨달았다.

TIL: SQL 학습 내용 https://datalearn.tistory.com/41

오늘 학습한 내용: USED_GOODS_BOARD와 USED_GOODS_USER 테이블에서 완료된 중고 거래의 총 금액이 70만원 이상인 사람의 회원 ID, 닉네임, 총 거래금액을 조회하는 SQL문 작성.

문제 풀이 순서:

  1. 두 테이블을 서로 묶기
  2. 완료된 거래만 조회하기
  3. 유저 ID, 닉네임, 금액을 SELECT 문에 작성하기
  4. 유저별로 거래한 총 금액을 계산하기
  5. 총 거래 금액이 70만 이상인 데이터만 추려내기
  6. 총 금액을 기준으로 오름차순 정렬하기

구체적 구현:

 
SELECT USER_ID, NICKNAME, SUM(PRICE) AS TOTAL_SALES 
FROM USED_GOODS_BOARD 
INNER JOIN USED_GOODS_USER 
ON WRITER_ID = USER_ID WHERE STATUS = 'DONE' 
GROUP BY USER_ID 
HAVING TOTAL_SALES >= 700000 
ORDER BY TOTAL_SALES;

 

오늘 배운 점:

  • 파이썬에서 배운 순차적 문제 해결 방법을 SQL에도 적용해보았다.
  • HAVING 명령어를 처음 다루어 보았고, 이를 통해 조건을 그룹화한 데이터에 적용하는 방법을 배웠다.
  • HAVING 대신 서브 쿼리를 활용하는 방법도 구상을 해보았지만 코드가 복잡해질 수 있다는 생각이 들었고 가능한 간결한 쿼리를 작성하는 것이 중요함을 배웠다.

'TIL' 카테고리의 다른 글

본 캠프 10일차 TIL  (0) 2024.07.03
본 캠프 9일차 TIL  (0) 2024.07.02
본 캠프 7일차 TIL 제출용  (0) 2024.06.30
본 캠프 6일차 TIL 제출용  (0) 2024.06.29
본 캠프 5일차 TIL 제출용  (0) 2024.06.28