[내일배움캠프 코드카타]

[QA/QC_2기]아침을 깨우는 코드카타(6-13)

mulmoknnhama 2025. 6. 16. 23:46

많이 늦은 글이다. 며칠 안쓴게 정말 역체감이 들 정도로 느낌이 이상하다.

 

프로젝트 관련 작업을 하느라 한동안 소홀히 한 점이 크다.

그렇지만, 코드카타는 계속 되어야만 한다. 안한거는 안한거고, 게으른게 문제...

게으르지 말자 내 자신....!


알고리즘 문제(Python)

알고리즘 문제: 부족한 금액 계산하기

 

문제를 파악하자

원래 놀이기구 이용료는 price원인데 놀이기구를 n번 이용할 때마다 n배로 내야한다.

놀이기구를 n번 타게 될 때, 금액에서 얼마가 모자른지 출력(안모자르면 0으로 반환)

 

어떻게 풀어야할까?

금액, 돈, 횟수를 적당히 잘 활용해 써야한다

for 반복문과 변수지정을 잘 해야... 안꼬인다


문제를 풀어보자

answer = 0 : 전역변수 지정

 

for n in range(1, count+1): : range를 이용해서 횟수(count)를 for구문으로 반복한다

 

answer += price*n : 요금과 탄 횟수를 곱해서 answer에 더한다

 

pay = answer - money : answer의 값에서 가진돈(money)를 뺀 값을 pay라는 변수에 지정

 

return pay if pay > 0 else 0

pay가 0보다 클 때, pay를 출력하고 아닐 때(0일 때) 0으로 출력


SQL 문제

 

SQL 문제: 상품 별 오프라인 매출 구하기


문제를 파악하자

두 테이블에서 상품코드 별 매출액의 합계를 출력해야한다.

매출액 기준 내림차순 정렬, 금액이 같으면 코드기준 오름차순

 

어떻게 풀어야할까?

이렇게 되면 두 테이블의 공통된 정보가 필요하므로 inner join을 써야하고

group by와 order by를 써보자


문제를 풀어보자

 

조회할 컬럼: product_code, 매출액

가져올 테이블: product, offline_sale

그룹지을 컬럼(group by): product_code

정렬할 컬럼(order by): 매출액

 

inner join

product as a inner join offline_sale as b on a.product_id=b.product_id

두 테이블의 공통된 정보를 가져와야하므로 inner join

두 테이블의 공통된 컬럼은 product_id로 이걸로 묶어준다.


각 절별 조회

 

select

a.product_code : a테이블의 product_code

 

sum(a.price*b.sales_amount) as sales

a테이블 price와 b테이블의 sales_amount를 곱한 값을 더한 것 -> sales 라는 별명

 

group by

a.product_code : 상품 별 ~ 이라고 했으니 a테이블의 product_code가 기준

 

order by

sales(매출액)기준 내림차순 desc, product_code기준 오름차순 asc