240727

Gi Woon Lee·2024년 7월 27일
0

TIL

목록 보기
24/78

SQL

83번.Product Sales Analysis I

#  product_name, year, and price for each sale_id in the Sales table.

select 
    p.product_name product_name
    , s.year year
    , s.price price
from Sales s join Product p on s.product_id  = p.product_id

easy

84번. Customer Who Visited but Did Not Make Any Transactions

# ID's of users who visited without making any transactions
# The number of times they made these types of visits 

select
    v.customer_id customer_id,
    count(v.visit_id) count_no_trans 
from
    visits v left join transactions t 
    on v.visit_id = t.visit_id
where 
    t.transaction_id is null
group by 
    v.customer_id 

join 절에서 오래걸렸다. v.visit_id = t.visit_id 으로 연결할것을 엉뚱한 컬럼와 visit칼럼을 연결시켜놓고 where, group by 등에서 디버깅 한다고 허덕이고 있었다 ..

from-join-where... 순서를 알고 있으니 디버깅 할 때도 해당 순서로 디버깅하는 습관을 갖자.

종이에 설계하고 푸는 방법.. 꽤나 좋은 방법이다.

Python

38번. 직사각형 별 찍기

# '표준 입력으로 두 개의 정수 n과 m이 주어집니다' : input으로 물어봐야 한다는 뜻임. 

n, m = map(int, input().strip().split(' '))

def square(n,m):
    for i in range(m):#세로
        for j in range(n):#가로
            print('*',end='')
        print('')

square(n, m)

이 문제에는 표준 입력으로 두 개의 정수 n과 m이 주어집니다.
별(*) 문자를 이용해 가로의 길이가 n, 세로의 길이가 m인 직사각형 형태를 출력해보세요.

"표준 입력으로 두 개의 정수가 주어진다." 는 뜻은 input()함수를 통해 표준 입력값을 받아야 한다는 뜻이다.

따라서 input() 함수를 사용해주고, 차례로 아래의 과정을 통해 n, m을 받아온다.

  1. strip() 메서드: 입력값 좌 우 공간 없애기
  2. split('') 공백을 기준으로 나누어지는 리스트 생성하기
  3. map(함수, 리스트) 메서드: 리스트 인자의 값에 각각 함수 적용해주기 -> 전부 int()함수를 적용하여 정수로 전환
  4. n, m 에 해당 정수 리스트 배정

그러고 난 뒤 직사각형 생성 함수 정의 및 이중for문 작성.

마지막으로 함수를 호출하는 것을 잊으면 안된다.

  • print('*',end='') : *을 출력하는 역할, end='' 은 줄바꿈을 방지하는 역할을 수행한다.
    print()함수의 구조

    print(출력대상, sep='', end=백슬래시n)
    sep 과 end= 는 option이며, 기본 end=옵션인 백슬래시n 은 줄바꿈이다.
    위 코드에서는 이를 end=''로 변경하여 해당 for문이 종료될때까지 같은 줄에서 *이 출력되도록 바꾸었다.

즉 for문이 끝날때까지 *을 같은 줄에 출력한다.

39번. 최소공배수와 최대공약수

def solution(n, m):
   # greatest common divisor
   gcd = None
   for div in reversed(range(1, min(n, m)+1)): # 역순으로 하는게 효율적이다. reversed 안하면, 1이 나온다. 
       if n % div == 0 and m % div == 0:
           gcd = div
           break
   
   # least common muliple
   # lcm = None
   # mul = 1
   # while True:
   #     if (max(m,n) * mul) % min(m,n) == 0:
   #         lcm = (max(m,n) * mul)
   #         break
   #     mul += 1
    
   lcm = (n*m) / gcd
       
   return[gcd, lcm]
  1. GCD(최대공약수), LCM(최소공배수) 변수 생성
  2. GCD 를 구하기 위해 주어진 두 수를 모두 나누어 떨어뜨리는 수를 구한다. - 이 때 reversed()함수를 통해 뒤에서부터 나눠주는게 중요하다. 1은 모든 수의 공약수이기 때문이기도 하며 더 효율적인 for문을 위해서이기도 하다.
  3. LCM 을 위해 WHILE문을 돌릴 수도 있지만, LCM = (n * m) / GCD 공식을 사용하여 간단하게 해결할 수 있다.

10minute pandas

개념정의역할예시
라이브러리여러 모듈을 모아놓은 코드 집합체특정 작업을 수행하는 데 필요한 도구와 기능을 제공NumPy, Pandas
모듈특정 기능을 가진 코드 파일, 함수와 클래스를 포함코드를 논리적으로 그룹화하고 재사용 가능하게 함math, os, sys
패키지모듈을 논리적으로 그룹화한 디렉토리모듈들을 체계적으로 조직하고 네임스페이스 충돌을 방지함numpy, requests
함수특정 작업을 수행하는 독립적인 코드 블록코드를 재사용하고 구조화하며, 복잡한 작업을 단순화함len(), print()
메서드클래스 내에 정의된 함수, 특정 객체의 상태나 동작을 정의객체의 속성을 조작하거나 객체 간의 상호작용을 처리함list.append(), str.lower()
클래스객체를 생성하기 위한 청사진, 속성과 메서드를 포함코드를 더 구조화하고 재사용 가능하게 하며, 객체와 관련된 데이터를 캡슐화함class Car: ...
객체클래스의 인스턴스, 클래스에 정의된 구조와 행동을 구현실제 데이터를 담고 있으며, 클래스에서 정의한 메서드를 사용할 수 있음my_car = Car()
변수데이터를 저장하는 메모리 위치를 가리키는 이름데이터를 저장하고 참조하는 데 사용됨x = 10, name = "Alice"
상수한 번 할당되면 변경되지 않는 값변하지 않는 데이터를 표현하고 코드의 가독성을 높임PI = 3.14159
인스턴스클래스에서 생성된 구체적인 객체클래스의 속성값을 갖는 실제 객체로, 메서드를 호출할 수 있음car = Car()
네임스페이스변수 이름을 구분하기 위한 시스템동일한 이름의 변수가 다른 영역에서 독립적으로 사용될 수 있도록 함global, local, enclosed, built-in
스코프변수가 참조될 수 있는 코드 영역변수의 가시성을 제한하고, 네임스페이스와 함께 이름 충돌을 방지함함수 내부, 전역
데코레이터함수나 메서드의 동작을 확장하거나 수정하는 데 사용되는 특별한 형태의 함수기존 함수나 메서드를 변경하지 않고도 그 동작을 추가하거나 수정할 수 있음@staticmethod, @classmethod, @property

Most common libraries in Python

collection of pre-written code

  1. Numpy: 수치형 데이터 작업에 유용한 라이브러리. 배열(arrays), 행렬(matrics) 등 다차원 배열(narrays)에 능하다.

  2. Pandas: 데이터 조작과 분석을 위한 라이브러리. 두 가지 주요 데이터 구조인 Series와 DataFrame을 제공한다.

Pandas DataFrame에서 데이터를 다루고, NumPy 배열을 사용하여 수치 연산을 수행하는 경우가 많습니다.

  1. Matplotlib: 시각화를 위한 라이브러리.

  2. Scikit-learn: 머신러닝을 위한 라이브러리. 분류, 회귀, 클러스터링 툴을 제공

  3. TensorFlow: 머신러닝 모델을 위한 라이브러리. deep learning, computer vision, natural language processing 에 사용된다.

  4. OpenCV: computer vision에 사용된다.

0개의 댓글