내일배움캠프_데이터분석_2기/TIL

[TIL] camp_day11_240429

단ee 2024. 4. 29. 22:20

3주차 시작. 오늘은 중간에 청년정책박람회 다녀오느라 학습을 많이 못 했다. 내일 일과시간 전 남은 강의 복습하기

학습 내용


  • SQL 문제가 뒤로 갈수록 난이도가 높아진다. 하루 하나 풀기도 버겁다.

  • 한 시간 반에 걸쳐서 풀었는데, 계속 틀려서 포기하려다가 조건 하나 수정하니까 성공해서 어이없었다...
    프로그래머스.상품을 구매한 회원의 비율 구하기

    ```
    SQL
    WITH t as (SELECT count(USER_ID) t_cnt
               FROM USER_INFO
               WHERE YEAR(JOINED) = '2021')
    SELECT YEAR(SALES_DATE) as YEAR
    ,MONTH(SALES_DATE) as MONTH
    ,count(distinct s.USER_ID) as PURCHASED_USERS    
    ,round(count(distinct s.USER_ID)/t_cnt,1) as PURCHASED_RATIO 
        -- 비율 계산이라 전체를 계산한 결과값이 필요해서 WITH문에서 total을 계산한 컬럼을 끌어와 썼다.
        -- 문제에서 요구한 바는 소숫점 둘째자리에서 반올림이어서 틀렸었다. round(x, 2)로 적었었음. 수정해서 맞음 
    FROM ONLINE_SALE as s
    INNER JOIN USER_INFO i
        on s.USER_ID = i.USER_ID
    , t
    WHERE YEAR(JOINED) = '2021'
    GROUP BY 1, 2
    ORDER BY 1, 2
    ```
  • 재밌는데 이렇게 풀어도 되나 싶었던 문제

    • 프로그래머스.하샤드 수
    • 한동안 거의 모든 알고리즘 문제를 리스트를 만들어서 > 리스트에 담긴 데이터를 string이나 int로 바꾼 다음 결과값을 출력하게 했다.
    • 과연 이렇게 풀리는 대로 코테를 풀어도 되는 걸까...?
      Python
      # 하샤드 수 : 양의 정수 x가 있을 때 각 자리의 숫자 합으로 x가 나누어 떨어지는 수
      def solution(x):
      list=[int(i) for i in str(x)]  # x를 string 으로 바꿔서 각 자리 숫자를 하나씩 쪼개고, 다시 int type으로 바꿨다.
      if x % sum(list) == 0:  # 그리고 list의 합으로 x를 나눴을 때 나머지가 0이 되면(=나누어 떨어지면)
          return True            # True를 출력함
      else:
          return False
  • 오랜만에 수학 풀어서 재밌었던 문제

    • 프로그래머스.두 정수 사이의 합
    • 문제 보자마자 이건 등차수열이다! 이러면서 풀었던 문제. 정작 등차수열 공식은 생각이 안 나서 손으로 수식을 썼다...
        Python
        # a, b 사이의 정수 개수가 짝수일 때 : sum(a-3, a-1, a+1, a+3) = 4a = 갯수 * ((a-3 + a+3)/2) =  갯수 * (a+b)/2
        # a, b 사이의 정수 개수가 홀수일 때 : sum(a-2, a-1, a, a+1, a+2) = 5a = 갯수 * ((a-3 + a+3)/2) =  갯수 * (a+b)/2
        # a에서 b까지의 거리(=길이)를 구하고, (a+b)/2 한 값을 곱해주면 두 정수 사이 숫자들의 합이 나온다.
        def solution(a, b):
        if a <= b:
            answer = ((a + b) / 2) * len(range(a, b+1))   # range는 end 조건 정수 기준 하나 앞에서 끝난다! 그래서 b+1
        else:
            answer = ((a + b) / 2) * len(range(b, a+1))   
                # 문제 조건에서 a <= b 라는 조건이 주어진 게 아니라서 변수에 할당된 값이 a > b 일 경우 오류가 발생했다.
                # 그래서 range 범위를 거꾸로 설정한 else 문 작성. 
        return answer

고찰 & 기타


  • 오늘 목표했던 파이썬 5주차 강의는 완강하지 못해서 아쉽다.
  • 외출로 학습시간이 너무 늘어지다보니 밤에는 집중이 안 돼서 차라리 내일 아침에 보충하는 게 나을 것 같다.
  • 코테 풀면서 오랜만에 수학 문제 푸는 거 같은 느낌이 들어서 재밌었다.
    사실 등차수열 계산법은 루미큐브(보드게임) 할 때 맨날 쓰는 방법이다. (n-1)+(n)+(n+1) = 3n ...

'내일배움캠프_데이터분석_2기 > TIL' 카테고리의 다른 글

[TIL] camp_day13_240501  (1) 2024.05.01
[TIL] camp_day12_240430  (0) 2024.04.30
[TIL] camp_day10_240426  (0) 2024.04.26
[TIL] camp_day9_240425  (1) 2024.04.25
[TIL] camp_day8_240424  (0) 2024.04.24