전체 글

n = int(input())arr = []for i in range(n): name, a, b, c = input().split() name = str(name) a, b, c = [int(x) for x in [a, b, c]] arr.append([name, a, b, c])arr.sort(key=lambda x: (-x[1], x[2], -x[3], x[0]))for i in arr: print(i[0])list.sort(key= lambda x:(x[1],-x[0]))와 같이 정렬하면 이차원 리스트에서 [1]인덱스에 대해 오름차순 정렬한 뒤, 그 상태에서 [0]인덱스에 대해 내림차순 정렬한다. a,b,c = [int(x) for x in [a,b,c]]를 통해 한줄로 a,b,c를 동시에..
n = int(input())arr = list(map(int, input().split()))dp = [1] * nfor i in range(1, n): for j in range(0, i): if arr[j]  0 이런식으로 n-1번 반복하면 주어진 배열에 대해 가장 긴 증가하는 부분 수열을 구할 수 있다.4 2 5 8 4 11 15에서 4 5 8 11 15를 구할 수 있는데,5는 2가 5보다 작으니 dp[1]+1과 기존 dp[2]인 1을 비교하여 더 큰 수인 2가 dp[2]에 갱신됨.8은 5가 8보다 작으니 dp[2]+1과 기존 dp[3]인 1을 비교하여 더 큰 수인 3이 dp[3]에 갱신됨.4는 2가 4보다 작으니 dp[1]+1과 기존 dp[4]인 1을 비교하여 더 큰 수인 2가 dp[..
n, m = map(int, input().split())arr = []dp = [[0] * m for i in range(n)]#arr 초기화arr = []for i in range(n): arr.append(list(map(int, input().split())))for i in range(n): dp[i][0] = arr[i][0]for j in range(1, m): for i in range(n): if (i == 0): dp[i][j] = max(dp[i + 1][j - 1], dp[i][j - 1]) + arr[i][j] elif (i == n - 1): dp[i][j] = max(dp[i - 1][j - 1], dp[i][j - 1]) + arr[i][j]..
import sysput = sys.stdin.readline()n, m = map(int, put.split())arr = [0] * nfor i in range(n): arr[i] = int(input())arr.sort(reverse=True)cnt = 0remain = mfor i in range(n): if arr[i]  위의 방식은 그리드 방식이 가미된 방식이고import sysput = sys.stdin.readline()n, m = map(int, put.split())arr = [0] * nfor i in range(n): arr[i] = int(input())arr.sort(reverse=True)dp = [10001] * (m + 1)dp[0] = 0for i in range(n..
상속상속: 기존 클래스(parent class, super class)의 내용(속성과 기능)을 자식 클래스가 물려받는 것- class 자식클래스(부모클래스)로 선언- 자식 클래스 객체는 .을 사용해 부모클래스의 속성과 메소드 사용가능- 자식 클래스에서 오버라이딩한 메소드가 있을 때 부모클래스의 메소드 또한 사용하고 싶으면 super.메소드()를 통해 가능- 자식클래스의 매개변수로 여러 개의 부모클래스를 받아오면 다중상속이 가능하다. 메소드 오버라이딩: 부모 클래스의 메소드를 자식클래스에서 재정의*파이썬은 오버라이딩은 지원하지만 오버로딩(서로 다른 파라미터를 받는 것)은 지원하지 않는다.  클래스 메소드, 정적메서드인스턴스 메소드: 가장 일반적인 메소드, 첫 번째 인자에 객체 자신을 의미하는 self를 파..
캡슐화란?캡슐화: 데이터와 데이터를 조작하는 메서드를 하나의 단위로 묶는 것- 사용자가 변수와 메소드에 직접 접근하여 데이터를 변경하는 행위로부터 내부 상태를 보호하고,외부에서의 직접적인 접근을 제한하여 무결성을 유지 → 코드의 유지보수성을 높이고 가독성 향상 자바와 같이 private 키워드와 같은 외부통제 기법은 없지만파이썬은 1. private 변수 개념 2. protected 멤버 개념을 통해 캡슐화를 할 수 있다. Private 변수, Protected 멤버▶private 변수: 클래스 내부의 변수를 외부에서 사용하는 것을 막기 위해 인스턴스 변수 이름을 __ 형태로 선언파이썬은 클래스 내부에서 변수 이름 앞에 __를 붙이면 내부적으로 변수 이름을 '_클래스명__변수명' 꼴로 변경.이를 네임 맹..
동시성, 병렬성동시성: 한 컴퓨터 시스템이 여러 작업을 번갈아가며 실행하여 논리적으로 동시에 수행되는 것처럼 보이는 능력ex) 단일 CPU에서 멀티스레딩을 사용하여 여러 작업을 처리 스레드는 프로세스 내에서 제어영역을 담당하는 하는 부분으로, 프로세스의 Code, Data, Heap 영역을 서로 공유한다.가벼운 문맥전환이 가능하고 GIL을 통해서 스레드 동기화를 수행한다. 스레드 동기화: 여러 스레드가 동시에 데이터나 자원에 접근할 때 발생하는 문제 방지하는 방법  *병렬성: 여러 작업을 실제로 동시에 처리하는 능력ex) 여러 CPU 코어 또는 프로세서(멀티프로세싱)를 사용하여 각 작업을 물리적으로 동시에 처리 바운드I/O 바운드: CPU보다 입출력 작업에서 더 많은 시간이 소요되는 작업으로, 실행속도가..
[혼자 공부하는 파이썬]에서 생성자를 배울 때 소멸자를 배웠고,소멸자를 배울 때 언제 소멸하는지를 알기 위해 가비지 컬렉터 개념을 배웠으며가비지 컬렉터를 사용하는 GIL에 대해 알게 되어서GIL이 운영체제를 공부한 부분과 밀접한 관련이 있길래 파이썬의 동시성 관리에 대해 학습했다. 가비지 컬렉터가비지 컬렉터: 메모리를 효율적으로 사용하기 위해 사용되지 않는 객체를 메모리에서 해제하는 메모리 관리 메커니즘.'사용되지 않는 객체' 판단 기준- [혼자 공부하는 파이썬]에선 변수에 저장되지 않거나, 함수에서 나오는 케이스를 예시로 듦. 참조 카운팅: 객체가 몇 번 참조되었는 지를 추적하고, 카운트가 0이면 사용되지 않는 것으로 판단import sys // sys.getrefcount(객체)(sys.getrefc..
08-1 클래스의 기본추상화: 객체 지향 프로그래밍에서 복잡한 시스템을 클래스와 메서드 등을 통해 간단한 모델로 표현하는 것- 인터페이스 정의: 클래스의 구조를 정의하여 서브클래스에서 구현해야하는 메서드 명시- 코드의 일관성 유지: 여러 서브 클래스가 동일한 인터페이스를 따르도록 함- 재사용성 증가: 공통적인 기능을 상위 클래스에서 정의 후 세부적인 구현은 서브 클래스에서 처리 클래스: 객체의 속성과 메서드를 정의해주는 구조인스턴스: 클래스에서 생성된 객체- 클래스는 초기화를 통해 제어함- 재사용성과 조직화에 용이해지고 코드의 복잡성을 줄임 클래스 선언class 클래스 이름:    클래스 내용 객체(인스턴스) 생성인스턴스 이름 = 클래스 이름()  #생성자 함수 생성자__new__를 호출하여 객체를 생성..
06-1 구문 오류와 예외구문 오류: 프로그램 실행 전 발생하는 오류. SyntaxError  +) 들여쓰기 오류인 IndentationError도 구문 오류로 예외처리를 할 수 없다. 예외 / 런타임 오류: 프로그램 실행 중 발생하는 오류 예외 처리1. 조건문 사용(기본 예외 처리)2. try 구문 사용 try except 구문try:    예외가 발생할 가능성이 있는 코드except:    예외가 발생했을 때 실행할 코드 except에 pass 키워드 넣어서 예외는 처리하되  프로그램이 강제 종료되는 것을 막는다. try except else 구문else: 에는 예외가 발생하지 않았을 때 실행할 코드를 넣는다.*else구문은 무조건 except 구문 뒤에 사용한다. fianlly 구문예외 발생 여부와..
뭐맛
뭐든 맛있게