품질관리(QAQC) 데이터 부트캠프(본캠프)

본캠프_5주차(금)_TIL

Wat_zy 2025. 10. 17. 09:07

✅ 오늘 한 것

알고리즘 문제, SQLD


✏️ 오늘 배운 점

푸드 파이트 대회

푸드 파이트 대회에서는 두 선수가 같은 양과 순서로 음식을 먹어야 한다.
주어진 음식 개수 배열 food를 바탕으로, 각 음식의 절반만 사용하여 왼쪽과 오른쪽이 대칭이 되도록 배치하고 중앙에는 물(‘0’)을 두는 문자열을 만들어야 한다.

food = [1, 3, 4, 6]	

def solution(food):
    result = ""
    for i in range(1, len(food)):
        for j in range(1, (food[i]//2)+1):
            result += str(i)
    result_list = list(result)
    result_reverse_list = sorted(result_list, reverse=True)
    return ''.join(result_list) + '0' + ''.join(result_reverse_list)

 

1️⃣ 반복문을 이용해 음식 배치 생성

food[i]는 i번 음식의 개수를 의미한다.

대회에서는 두 선수가 같은 양의 음식을 먹기 때문에, 각 음식의 절반(food[i] // 2)만 사용한다.

예를 들어 food[1] = 3이라면, 두 선수가 각각 1개씩 먹을 수 있으므로 "1"이 한 번 추가된다.

이 과정을 통해 왼쪽 선수의 음식 배치를 문자열로 만든다.

 

2️⃣ 대칭 구조를 위한 반대편 생성
문자열을 리스트로 바꾸어 sorted(result_list, reverse=True)를 통해 역순(내림차순)으로 정렬한다.

3️⃣ 최종 문자열 결합 (왼쪽 + 물 + 오른쪽)
왼쪽 음식(result_list) + 물("0") + 오른쪽 음식(result_reverse_list)을 이어붙인다.


SQLD

UNION: 두 SELECT 결과를 합집합(중복 제거)으로 결합

UNION ALL: 두 SELECT 결과를 그대로 합침 (중복 허용)

MINUS: 첫 번째 SELECT 결과에서 두 번째 SELECT 결과를 뺌

INTERSECT: 두 SELECT 결과의 교집합

ROLLUP: 그룹별 합계 + 중간 합계 + 전체 합계까지 한 번에 계산하는 기능

집계 함수:

  • SUM() : 합계
  • AVG() : 평균
  • COUNT() : 개수
  • MAX() : 최대값
  • MIN() : 최소값

CUBE: ROLLUP보다 확장된 집계 방식

RANK(): 동점이 있으면 같은 순위, 다음 순위는 건너뜀(비연속 순위)

DENSE_RANK(): 동점이면 같은 순위, 다음 순위를 건너뛰지 않음(연속 순위)

ROW_NUMBER: 순위를 매기되, 중복 없이 무조건 1씩 증가

NTILE: 전체 데이터를 n개의 그룹(타일)로 나눠 각 행에 그룹 번호 부여


✏️ 오늘의 핵심

 

  • 코딩 테스트: 반복문 + 문자열 조작으로 대칭 구조 구현
  • SQLD: 집합 연산자(UNION~INTERSECT), 그룹 요약(ROLLUP/CUBE), 순위 함수(RANK~NTILE) 개념 숙지

 


📌추가로 해야할 점

SQLD 자격증 공부, 데이터 분석 심화 과정

'품질관리(QAQC) 데이터 부트캠프(본캠프)' 카테고리의 다른 글

본캠프_6주차(화)_TIL  (0) 2025.10.21
본캠프_6주차(월)_TIL  (0) 2025.10.20
본캠프_5주차(목)_TIL  (0) 2025.10.16
본캠프_5주차(수)_TIL  (0) 2025.10.15
본캠프_5주차(화)_TIL  (0) 2025.10.14