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

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

mulmoknnhama 2025. 6. 13. 10:32

하늘에 회색 빛깔의 구름이 꼈다. 비가 올 징조중 하나라고 봐야...

우중충해서 텐션이 낮아질 수는 있어도 코드카타는 계속된다.

 

오늘도 뇌를 원할하게 돌아가기 위해서 열심히 노력해보자!


알고리즘 문제(Python)

알고리즘 문제:약수의 개수와 덧셈

 

문제의 요지

left의 있는 수부터 right에 있는 수까지의 약수를 구하고

그 약수가 짝수면 합을, 홀수면 차를 해서 총합을 나오게 하면 된다

 

어떻게 풀어야할까?

for 반복문과 if 조건문을 적절히 잘 활용

코드가 길어질 수 있으니 실수하는 일 없이 바짝 풀어보자


문제를 풀어보자

answer = 0 : 전역변수를 지정

 

for n in range(left, right+1): : left부터 right까지의 반복하고 그 반복하는 변수n을 지정

 

리스트 컴프리헨션 확장형 - 반복문 형태

n_list = [] : 값을 넣기위해 빈 리스트를 생성한다

for i in range(1, n+1): : 1부터 n까지 반복하고, 반복하는 변수 i를 지정

if n % i == 0: : n이 i로 나눴을때 나머지가 0인 조건

n_list.append(i) : i를 n_list에 추가한다

 

if len(n_list) % 2 == 0: : n_list의 길이가 2로 나눴을 때 나머지가 0인 조건(짝수인 조건)

answer += n : 전역변수 answer에 n을 더한다

 

else: : 그외의 조건

answer -= n : 전역변수 answer에 n을 뺀다

 

return answer : answer 반환


SQL 문제

SQL 문제: 오랜 기간 보호한 동물 - 1

이번 문제는 테이블이 2개나 있다. 그 말인 즉슨 적절히 활용을 하라는 얘기

 

문제의 요지

문제는 두 테이블을 바탕으로 보호소에 들어온 날짜만 있고

입양일이 없는 동물의 이름을 3마리만 조회해야한다

 

어떻게 풀어야할까?

다 가져와서 살펴봐야하므로 inner join(교집합)이 아닌 left join(합집합)으로 묶는다

 

조회할 컬럼: 이름, 입양일

가져올 테이블: animal_ins, animal_outs

조건을 지정할 컬럼(where): 동물 id

정렬할 컬럼(order by): 입양일

제한을 할 컬럼(limit): 입양일


각 컬럼별 해석

 

from

animal_ins as a left join animal_outs as b

animal_ins 에 a라는 별칭, animal_outs에 b라는 별칭

 

select

a.name, a.datetime

a테이블의 name과 a테이블의 datetime 조회

 

where

b.animal_id is null

b테이블의 동물id 가 없는 조건을 한다