- 2주차 네 번째 날. 오늘부터 Python 강의를 수강하고, 다음 주에는 수강 내용을 기초로 한 과제가 예정되어 있다.
학습 내용
오늘은 어제 못 풀었던 만큼 알고리즘 문제를 더 많이 풀었다.
list 만들어서 해결한 두 문제
두 문제 모두 빈 리스트를 만들어서 그 리스트를 통해 풀었다. 더 간단한 코드로 푸는 방법이 있을 것 같은데... 아직 잘 모르겠다.
Python # 나머지가 1이 되는 가장 작은 수 찾기 def solution(n): list = [] for i in range(1, n + 1): if n % i == 1: list.append(i) answer = min(list) return answer
Python # 약수의 합 def solution(n): list = [] for i in range(1, n + 1): if n % i == 0: list.append(i) answer = sum(list) return answer
잘 안 풀려서 고민했던 문제
일단 x부터 x만큼의 간격으로 n개의 숫자를 리스트에 출력하는 거니까,
x * 1(=x), x * 2, x * 3, ... , x * n 까지 리스트로 출력하는 거라고 생각하고 아래처럼 코드를 작성했다.
Python def solution(x, n): answer = [ range(x,((x * n) + 1),x) ] return answer # TypeError: Object of type range is not JSON serializable # 원래 코드 : range를 리스트 안에 바로 쓸 수 없어서 에러 발생
저 에러가 왜 발생하나 했더니 리스트 안에 함수를 저런 방식으로 쓸 수 없어서 나는 에러였다. 이 환경에서는 구현되지 않는다고...
그래서 GPT를 붙잡고 물어본 결과, 아래와 같이 수정된 코드를 얻었다.
Python def solution(x, n): answer = [ x * i for i in range(1, n + 1) ] return answer
x는 고정이고, 결국 1부터 n까지의 리스트를 출력해 값 하나마다 x를 곱해주면 되는 거였다.
아직 파이썬 구문이 익숙하지 않아서 잘못된 문법으로 썼던 거였는데, 그래도 기본적인 접근 방향 자체는 맞게 가는 것 같다.
UNION (SQL)
- 오늘 코테 풀면서 처음으로 UNION 구문을 활용해보았다. 중복이 제거되면 안 되는 테이블이었기 때문에 UNION ALL 활용.
- LIMIT 대신 WINDOW 함수 중에서 RANK 사용하면 더 짧은 쿼리로 풀 수 있을 것 같은데... 다음에 다시 풀어봐야겠다.
- 프로그래머스.주문량이 많은 아이스크림들 조회하기
SQL SELECT a.FLAVOR FROM ( SELECT t.FLAVOR ,SUM(t.TOTAL_ORDER) sum_order FROM ( SELECT FLAVOR, TOTAL_ORDER FROM FIRST_HALF UNION ALL SELECT FLAVOR, TOTAL_ORDER FROM JULY ) as t GROUP BY t.FLAVOR ORDER BY sum_order DESC LIMIT 3 ) a
고찰 & 기타
- 파이썬 강의 걱정했는데 아직 초반이라 시간 내에 끝났다. 부디 내일도 잘 들을 수 있길.
- 구글 colab 단축키를 좀 외워야겠다. colab 단축키 모음
- 코딩테스트, 특히 알고리즘 문제를 안 풀고 빼먹는 날이 가끔 생겨서...
코테를 풀면서 뿌듯함을 느끼고자 귀여운 노션 대시보드를 만들었다. 대시보드 자랑하는 블로그 글
'내일배움캠프_데이터분석_2기 > TIL' 카테고리의 다른 글
[TIL] camp_day11_240429 (0) | 2024.04.29 |
---|---|
[TIL] camp_day10_240426 (0) | 2024.04.26 |
[TIL] camp_day8_240424 (0) | 2024.04.24 |
[TIL] camp_day7_240423 (0) | 2024.04.23 |
[TIL] camp_day6_240422 (1) | 2024.04.22 |