티스토리 뷰
SQL 코드카타
Q94. 1633. Percentage of Users Attended a Contest
1. 문제 링크: https://leetcode.com/problems/percentage-of-users-attended-a-contest/description/
2. 정답 코드:
SELECT
r.contest_id,
ROUND(COUNT(u.user_id)/(SELECT COUNT(*) FROM Users)*100, 2) as percentage
FROM Users as u
JOIN Register as r
ON u.user_id = r.user_id
GROUP BY r.contest_id
ORDER BY percentage DESC, r.contest_id ASC;
3. 오류 상황: 전체 비율이 100퍼센트로 나옴
4. 시도 방법: 분모가 되는 데이터가 잘못된 것 같아 어떤 값이 들어가야 하는지 다시 체크함
5. 최종 문제 해결 방법: 두 테이블을 JOIN 하면 이미 contest_id가 있는 user_id만 남아있어서 계속 100퍼센트로 구해진 것이다! 서브쿼리를 사용하여 Users 테이블의 user_id가 분모가 될 수 있도록 변경해줘야 한다.

근데 어차피 분모에 서브쿼리를 사용해서 Users 테이블 컬럼은 계산했으니까 JOIN 필요 없이 Register 테이블만 이용해주면 더 간단하고 처리 속도가 빠른 쿼리를 작성할 수 있다!
SELECT
contest_id,
ROUND(COUNT(user_id)/(SELECT COUNT(*) FROM Users)*100, 2) as percentage
FROM Register
GROUP BY contest_id
ORDER BY percentage DESC, contest_id ASC;
Q95. 1211. Queries Quality and Percentage
1. 문제 링크: https://leetcode.com/problems/queries-quality-and-percentage/
2. 정답 코드:
SELECT
query_name,
ROUND(SUM(rating/position) / COUNT(result), 2) as quality,
ROUND(SUM(IF(rating < 3, 1, 0)) / COUNT(result) * 100, 2) as poor_query_percentage
FROM Queries
GROUP BY query_name

Q96. 1193. Monthly Transactions I
1. 문제 링크: https://leetcode.com/problems/monthly-transactions-i/
2. 정답 코드:
SELECT
SUBSTR(trans_date, 1, 7) as month,
country,
COUNT(id) as trans_count,
SUM(IF(state = "approved", 1, 0)) as approved_count,
SUM(amount) as trans_total_amount,
SUM(IF(state = "approved", amount, 0)) as approved_total_amount
FROM Transactions
GROUP BY SUBSTR(trans_date, 1, 7), country;

Q120. 1667. Fix Names in a Table
1. 문제 링크: https://leetcode.com/problems/fix-names-in-a-table/description/
2. 정답 코드:
SELECT
user_id,
CONCAT(UPPER(SUBSTR(name, 1, 1)), LOWER(SUBSTR(name, 2, LENGTH(name)))) as name
FROM Users
ORDER BY user_id;

Q121. 1527. Patients With a Condition
1. 문제 링크: https://leetcode.com/problems/patients-with-a-condition/description/
2. 정답 코드:
SELECT *
FROM Patients
WHERE conditions like "DIAB1%"
OR conditions like "% DIAB1%";
3. 오류 상황: 'DIAB100 MYOP'는 조회가 되는데, 'ACNE DIAB100'는 조회가 안됨
4. 시도 방법: 'DIAB1'로 단어가 시작되는 병명을 모두 찾아야 하므로, 조건을 2가지로 줌
5. 최종 문제 해결 방법: 'DIAB1%' 말고도, '% DIAB1%'도 포함해서 해결

Python 코드카타 (https://github.com/heeso0908/codekata.git)
Q21. 하샤드 수
1. 문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/12947
2. 정답 코드:
def solution(x):
num = 0
for i in str(x) :
num += int(i)
if x % num == 0 :
answer = True
else :
answer = False
return answer
Q22. 두 정수 사이의 합
1. 문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/12912
2. 정답 코드:
def solution(a, b):
answer = 0
if a <= b :
for i in range(a, b+1) :
answer += i
else :
for i in range(b, a+1) :
answer += i
return answer
Q23. 콜라츠 추측
1. 문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/12943
2. 정답 코드:
def solution(num):
answer = 0
while num != 1 :
if num % 2 == 0 :
num = num // 2
else :
num = num * 3 + 1
answer += 1
if answer >= 500 :
return -1
return answer
3. 오류 상황: answer가 500 이상이면 -1을 반환해야 하는데 다른 숫자를 반환함
4. 시도 방법: 뭐가 잘못된건지 알 수 없어서 생성형 AI에게 질문함
5. 최종 문제 해결 방법: 마지막 if 문에서 answer >= 500 조건을 만족하면 answer = -1 이게 아니라 바로 return -1을 해서 끝내야 함!
Q24. 서울에서 김서방 찾기
1. 문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/12919
2. 정답 코드:
def solution(seoul):
answer = seoul.index("Kim")
return f'김서방은 {answer}에 있다'
seoul.index("Kim")으로 인덱스 번호를 바로 찾으면 되는데, print 함수가 return 값으로 들어갈 수 없어서 return 문에는 문장 그대로를 작성해줘야 한다!
Q25. 나누어 떨어지는 숫자 배열
1. 문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/12910
2. 정답 코드:
def solution(arr, divisor):
answer = []
for i in arr :
if i % divisor == 0 :
answer.append(i)
if len(answer) == 0 :
answer.append(-1)
answer.sort()
return answer
3. 오류 상황: 원하는 대로 값이 나오지 않음
4. 시도 방법: 해결할 수 있는 함수나 방법을 모르겠어서 생성형 AI에게 물어봄
5. 최종 문제 해결 방법: sort()는 리스트를 만들고 맨 마지막에 해야하고, for 문이 끝난 후에 len 확인해서 비어있으면 -1을 append 해줘야 한다!
주말에 파이썬 강의를 추가로 수강하려고 했지만, 개인 일정이 많아 듣지 못했다.
코드카타는 문제 난이도가 점점 높아지면서 해결하는 데 시간이 많이 걸려, 문제 개수를 조정해야 할지 고민이 된다.
그래도 꾸준히 풀다 보면 문제를 파악하는 속도도 점점 빨라지고, 풀이 정확도 역시 높아질 거라고 생각한다.
내일부터 또 한 주가 시작되는 만큼, 다시 힘내서 차근차근 해나가야겠다!
'내일배움캠프 데이터 분석' 카테고리의 다른 글
| 20일차) 내일배움캠프 데이터 분석 TIL - 파이썬 전처리/시각화(3) (0) | 2026.01.20 |
|---|---|
| 19일차) 내일배움캠프 데이터 분석 TIL - 파이썬 전처리/시각화(2) (2) | 2026.01.19 |
| 18일차) 내일배움캠프 데이터 분석 TIL - 파이썬 전처리/시각화(1) (0) | 2026.01.16 |
| 17일차) 내일배움캠프 데이터 분석 TIL - 파이썬 기초(9) (0) | 2026.01.15 |
| 16일차) 내일배움캠프 데이터 분석 TIL - 파이썬 기초(8) (0) | 2026.01.14 |
- Total
- Today
- Yesterday
- 파이썬입문
- 데이터시각화
- 통계
- Python
- 코딩기초
- 비전공자코딩
- 프로그래밍입문
- 머신러닝
- git
- SQL
- 판다스
- 중학생코딩
- GoogleColab
- 파이썬
- 데이터분석
- github
- 데이터분석입문
- Til
- 구글코랩
- 내일배움캠프
- 텍스트분석
- 코딩처음
- 코드카타
- 태블로
- Tableau
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | |||||
| 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| 17 | 18 | 19 | 20 | 21 | 22 | 23 |
| 24 | 25 | 26 | 27 | 28 | 29 | 30 |
| 31 |
