240709

Gi Woon Lee·2024년 7월 9일
0

TIL

목록 보기
13/78

Python

약수의 합 구하기

https://school.programmers.co.kr/learn/courses/30/lessons/12928

def solution(n):
    result = 0
    for i in range(1, n+1): # 1~n 까지의 범위 설정
        if n % i ==0:   # 범위에서 약수 추출
            result = result + i # 약수 전부 더하기
    return result

x만큼 간격이 있는 n개의 숫자

https://school.programmers.co.kr/learn/courses/30/lessons/12954

# return 은 for 반복문 바깥에 있어야 한다. 안에 있으면 첫 번째 반복이 끝나자마자 값을 반환한다. 

def solution(x, n):
    answer = []
    for i in range(n): # n개의 숫자를 지니는 리스트
        answer.append(x * (i + 1)) # x 부터 시작해 x씩 증가하는 숫자
    return answer
  • return은 for 문 바깥에 위치해야 한다.
  • answer.append(x * (i + 1))x 부터 시작해 x씩 증가하는 숫자

형 변환 Type Conversion

참고 블로그
1. str() 문자형으로 변환
2. int() 정수형으로 변환 / float는 소수점 이하 버림
3. float() 실수형으로 변환 -> bool 형의 경우 True == 1.0, False == 0.0
4. bool() 모든 자료형은 bool로 변환 가능, 숫자 0 == False, 0 이 아니면 True

sort, reverse 메서드

sorting, python.docs

  • 오름차순 정렬 sort()
sorted([5, 2, 3, 1, 4])
결과: [1, 2, 3, 4, 5]
  • 내림차순 정렬 sort(reverse=True)

  • 리스트 순서 뒤집기 reverse()
    - reverse() 메서드는 리스트를 정렬/역정렬하는 것이 아니라 단순히 순서를 뒤집는 것이다.
    예를 들어 a_list = [1, 12, 3] 일 때
    a_list.reverse()

def solution(n):
    list_str = list(str(n))  # 문자열을 리스트로 변환
    list_str.sort(reverse=True)  # 리스트를 정렬
    answer = ''.join(list_str)  # 리스트를 다시 문자열로 변환
    return int(answer) # 정수로 변환
  • 리스트 정렬 list.sort()
a = [5, 2, 3, 1, 4]
a.sort()

결과:
a
[1, 2, 3, 4, 5]

JOIN 메서드

  • 문자열을 연결하는 데 사용된다. 특히, 튜플과 같은 반복 가능한 객체에 있는 문자열들을 하나의 문자열로 합치는 데 유용하다.

  • 형태: separator.join(iterable)

  1. separator: 각 문자열 사이에 삽입될 문자열로 보통 빈 문자열(''), 공백(' '), 콤마(',') 등을 사용한다.
  2. iterable: 문자열들이 포함된 반복 가능한 객체(리스트, 튜플 등)
words = ['Hello', 'world', 'from', 'ChatGPT']
sentence = ' '.join(words)
print(sentence)  # Output: "Hello world from ChatGPT"

리스트 컴프리헨션

사용 문제
https://www.w3schools.com/python/python_lists_comprehension.asp

[expression for item in iterable if condition]
  • new list를 리턴한다.
  • expression: 각 항목에 적용할 표현식입니다.
  • item: 각 항목을 나타내는 변수입니다.
  • iterable: 반복 가능한 객체 (예: 리스트, 문자열 등)입니다.
  • if condition: (선택 사항) 각 항목에 대해 참인 경우만 포함됩니다.

ex) for 문 -> list comprehension

# for 루프
digits = []
for digit in str(x):
    digits.append(int(digit))
# list comprehension
digits = [int(digit) for digit in str(x)]

위에서 보이듯 for문의 기능을 간결하게 한 줄로 표현할 수 있는 것이 리스트 컴프리헨션이다.

SQL

DATEDIFF 주의사항!!!!

https://school.programmers.co.kr/learn/courses/30/lessons/151138
DATEDIFF(2022-01-01,2022-01-01) 를 돌렸을 때 1 을 예상했으나 0을 반환한다. 따라서 원하는 값을 반환받기 위해서는 DATEDIFF(2022-01-01,2022-01-01)+1 을 적어줘야 한다.

이처럼 계산식을 점검하는 칼럼을 하나 만들어서 점검해주면 정확도가 올라간다.

SELECT HISTORY_ID,
       CAR_ID,
       DATE_FORMAT(START_DATE, "%Y-%m-%d") START_DATE,
       DATE_FORMAT(END_DATE, "%Y-%m-%d") END_DATE,
       #DATEDIFF(END_DATE, START_DATE),  <- 검증 칼럼! DATEDIFF 같은 날로 했을 때 1 이 아니라 0으로 나오는 것을 확인! 
       CASE WHEN DATEDIFF(END_DATE, START_DATE)+1 >= 30 THEN '장기 대여'  # 30일 이상이면 장기, 미만이면 단기
            ELSE '단기 대여' END AS RENT_TYPE
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY 
WHERE START_DATE LIKE "2022-09%"    # 대여 시작일이 2022년 9월에 속하는 대여 기록
ORDER BY HISTORY_ID DESC    # ID를 기준으로 내림차순 정렬

코트카타

python-하샤드 수

https://school.programmers.co.kr/learn/courses/30/lessons/12947

def solution(x):
    digits = []
    for digit in str(x):
        digits.append(int(digit))
    
    sum_of_digits = sum(digits)
    
    if x % sum_of_digits == 0:
        return True
    else:
        return False
        
# 위 코드의 for 루프를 list comprehension 한 코드는 다음과 같다. 

def solution(x):
    digits = [int(digit) for digit in str(x)] # list comprehension 문법을 통해 digit [] 를 만들고 시작한다. 
    sum_of_digits = sum(digits)
    if x % sum_of_digits == 0:
        return True
    else:
        return False 

파이썬 들여쓰기 단축키: ctr + [, ctr + ]

sql vs python 연산자 차이

https://teamsparta.notion.site/Python-3-ee4992c7aac64fe1b42183f97942483a

0개의 댓글