Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
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
Tags
more
Archives
Today
Total
관리 메뉴

냥냠

파이썬 알고리즘 공부 - (0) 본문

코테

파이썬 알고리즘 공부 - (0)

sueeee-e 2025. 1. 20. 19:20

코딩테스트 대비 알고리즘 공부

(파이썬)

https://youtu.be/m-9pAwq1o3w?feature=shared

 

📍자료형

 

- 정수형 ( 4, -1, ...)

- 실수형 ( 153.23, 5. -.7 , -12.12 )

*지수 표현 ( 1e9 => 1,000,000,000)(75.3e)

*반올림 함수 round() (123.123, 2) 

* 나누기 연산 시 실수형으로 반환

 

- 리스트 자료형 (배열, 테이블) list() or []  ( a = [0] * 5 => [0,0,0,0,0] )

* 인덱스는 0부터 시작

* 인덱싱, 슬라이싱 

* 리스트 컴프리헨션  : 리스트 초기화 방법  a = [ i for i in range(20) if i % 2 == 1] 조건문과 반복문을 삽입할 수 있다. 

#000
#000
n = 2
m = 3
array = [[0]*m for _ in range(n)]

- 문자열 자료형

*문자열 안에 " 포함해야 하는 경우  -> 백슬래시 사용

* 문자열 덧셈(+),곱셈(*), 인덱싱, 슬라이싱 가능

 

- 튜플 자료형

* 리스트와 유사, ()로 표현

* 한 번 선언된 값을 변경할 수 없다. 

 

- 사전 자료형 dict()

* 키와 벨류의 쌍으로 가지고

* 변경 불가능한 자료형을 키로 사용

* .keys(), .values() 함수 존재

 

- 집합 자료형 

* 중복 허용하지 않고 순서가 없음

* 존재 여부 set() or {} 중복 없애줌

* 합집합(|), 차집합(-), 교집합(&) 

* .add(), .update(), .remove() 

 

📍기본 입출력

 

입력

input() : int(input()), a = input()

map() : a = list(map(int, input().split()))

 

문자열 입력받기

import sys

data = sys.stdin.readline().rstrip()

 

출력

print() -> 출력 후 줄바꿈 수행

print(6, end=" ") 줄바꿈 X 

print("ddd" + star(answer) + "ㅇㅇ")

print(f"dd{answer}oo") #f-string 

 

📍조건문과 반복문

 

조건문

if x >= 10:        > 조건이 참이면

  print("dd")    > 이 코드 실행

 

if ~ elif ~ else

 

논리연산자 : X and Y , X or Y , not X

기타연산자 : x in 리스트, x not in 문자열 -> 리스트, 튜플, 문자열, 딕셔너리 모두 사용가능 

*pass : 무시

 

한 줄 작성 : "정답" if score >80 else "실패" 

 

반복문

 

while문  -> 무한루프 조심 (탈출할 수 있는지 꼭 확인하기)

while x> 5:

  print(x)

 

for문 

for x in array:

  print(x) 

 

for i in range(1, 10):

  result += i

 

*continue : 건너뛰기

*break : 탈출

 

📍함수와 람다 표현식

 

내장 함수 , 사용자 정의 함수

 

*함수 정의하기 

def 함수명(매개변수):

    실행할 소스코드

    return 반환 값

*global 키워드 : 전역변수를 지역변수처럼 적용

 

람다 표현식 : 특정 기능을 수행하는 함수를 한 줄에 작성할 수 있음

print((lambda a, b: a+b)(3,7))

print(sorted(array, key=lambda x: x[1])) -> 정렬할 때 두번째원소를 기준으로 정렬하고자 할 때 [("ㅁㅁ",10),()] 

result = map(lambda a, b: a+b, list1, list2) 

print(list(result)) -> 여러 개의 리스트에 적용

 

📍실전에서 유용한 표준 라이브러리

 

<내장함수>

sum() : 원소들의 합

min(), max()

eval() : 계산식 결과 도출

sorted() : 정렬,

*reverse=True로 내림차순, key = 기준

 

 

순열과 조합 : 순열은 순서 고려, 조합은 ㄴㄴ

순열 nPr : from itertools import permutations

조합 nCr : from itertools import combinations

 

중복 순열, 중복 조합

중복 순열 : from itertools import product

중복 조합 : from itertools import combinatios_with_replacement

 

data = ['A', 'B', 'C']

result = list(~~(data, repeat=2))

 

Counter

from collections import Counter

내부의 원소가 몇 번씩 등장했는지 사전식으로 나타냄

 

최대공약수와 최소공배수 

import math

최대공약수 : math.gce(21, 14)

최소공배수 : lcm(21,14)

def lcm(a, b):

    return a*b // math.gcd(a,b)