Tiny Finger Point Hand With Heart
본문 바로가기
728x90
반응형

파이썬27

[Python] 객체 지향 프로그래밍(Object-Oriented Programming, OOP) 객체(object) 사전적인 정의로 실제 존재하는 것을 말한다. 객체지향 이론에서는 사물과 같은 유형적인 것뿐만 아니라, 개념이나 논리와 같은 무형적인 것들도 객체로 간주한다. 프로그래밍에서의 객체는 클래스에 정의된 내용대로 메모리에 생성된 것을 뜻한다. 프로그램에서 사용되는 데이터 또는 식별자에 의해 참조되는 공간을 의미하며 값을 저장 할 변수와 작업을 수행 할 메소드를 서로 연관된 것들끼리 묶어서 만든 것을 객체라고 할 수 있다. 객체 지향 프로그래밍 (Object-Oriented Programming, OOP) 프로그래밍에서 필요한 데이터를 추상화 시켜 상태와 행위를 가진 객체로 만들고, 객체들간의 상호작용을 통해 로직을 구성하는 프로그래밍 방법. 객체지향 프로그래밍 만들기 1. 프로그램에 어떤 객.. 2023. 3. 6.
[백준/Python][Silver III] 계단 오르기 - 2579 [Silver III] 계단 오르기 - 2579 문제 링크 성능 요약 메모리: 31256 KB, 시간: 52 ms 분류 다이나믹 프로그래밍(dp) 문제 설명 계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. 과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점수를 얻게 된다. 예를 들어 와 같이 시작점에서부터 첫 번째, 두 번째, 네 번째, 여섯 번째 계단을 밟아 도착점에 도달하면 총 점수는 10 + 20 + 25 + 20 = 75점이 된다. 계단 오르는 데는 다음과 같은 규칙이 있다. 계단은 한 번에 한 계단씩 또는 두 계단씩 오를 수 있다. 즉, 한 계단을 밟으면서 이어서 다음 계단이나, 다음 다음 계단으로 오를 수 있다. .. 2023. 3. 1.
[알고리즘/Python] 재귀함수와 팩토리얼 재귀적으로 문제를 푼다는것 = 같은 형태의 더 작은 문제를 풀고 부분 문제의 답을 이용해서 기존 문제를 푸는 것. 재귀함수의 예시로 팩토리얼을 한번 보자. 팩토리얼 n의 팩토리얼은 n!이라고 표시한다. 이는 1부터 n까지의 정수를 곱하는 단순한 연산을 말한다. 재귀로 풀땐 항상 경우를 나눠줘야하는데 기본적인 base case와 조건이 다른 recursive case가 있다. 0!=1이라고했으니 n =0인 경우는 무조건 n!=1이 된다. 이렇게 바로 답이 나오는 경우를 base case라고 한다. 하지만 n != 0 인경우, n >0인 경우엔 재귀적으로 문제를 풀어야한다. 즉, 같은 형태의 더 작은 문제를 풀고 부분 문제의 답을 이용해서 기존 문제를 푸는 것이다. 위에 그림처럼 5!은 1x2x3x4x5 =.. 2023. 2. 23.
[Python] 진법변환 파이썬의 함수를 사용해서 쉽게 진법 변환이 가능하다. n진법 → 10진법 python에서는 기본적으로 int() 라는 함수를 지원한다. int(string, base) 위와 같은 형식으로 사용하면 된다. base에는 진법을 넣으면 된다. print(int('111',2)) print(int('222',3)) print(int('333',4)) print(int('444',5)) print(int('555',6)) print(int('FFF',16)) ----------------------- 7 26 63 124 215 4095 이렇게 10진수로 쉽게 변경이 가능하다. 10진법 → 2, 8, 16진법 2, 8, 16진수는 bin(), oct(), hex() 함수를 지원한다. * 결과는 모두 string .. 2023. 2. 21.
[Python] 몫과 나머지 , divmod() 많은 언어에서 몫과 나머지를 구할때, /와 %를 사용하여 구한다. 파이썬에서는 divmod를 사용하여 몫과 나머지를 한번에 구할 수 있다. 3나누기15 의 몫과 나머지 / (나누기), %(나머지) a = 3 b = 5 print(a/b) print(a%b) ------------------- 0.2 3 몫과 나머지를 연산기호를 사용하여 구하였다. 나누기 연산의 결과가 0.2로 나누어 떨어지는 결과를 반환한다. a = 7 b = 15 print(a/b) print(a%b) -------------------- 0.4666666666666667 7 나누어떨어지지 않는 수는 반올림된다. divmod a = 3 b = 15 print(divmod(a,b)) -------------------------- (0,.. 2023. 2. 21.
[백준/Python][Silver V] 요세푸스 문제 0 - 11866 [Silver V] 요세푸스 문제 0 - 11866 문제 링크 성능 요약 메모리: 116112 KB, 시간: 148 ms 분류 자료 구조(data_structures), 구현(implementation), 큐(queue) 문제 설명 요세푸스 문제는 다음과 같다. 1번부터 N번까지 N명의 사람이 원을 이루면서 앉아있고, 양의 정수 K(≤ N)가 주어진다. 이제 순서대로 K번째 사람을 제거한다. 한 사람이 제거되면 남은 사람들로 이루어진 원을 따라 이 과정을 계속해 나간다. 이 과정은 N명의 사람이 모두 제거될 때까지 계속된다. 원에서 사람들이 제거되는 순서를 (N, K)-요세푸스 순열이라고 한다. 예를 들어 (7, 3)-요세푸스 순열은 이다. N과 K가 주어지면 (N, K)-요세푸스 순열을 구하는 프로그램.. 2023. 2. 16.
[DRF] Todo 목록 API만들기(6) 이제 마지막으로 완료된 todo를 조회하는 기능을 구현해보려고 한다. 완료 view만들기 #todo/views.py from rest_framework import status from rest_framework.response import Response from rest_framework.views import APIView from rest_framework.generics import get_object_or_404 from rest_framework import viewsets from .models import Todo from .serializers import TodosimpleSerializer,TodoDetailSerializer,TodoCreateSerializer . . . clas.. 2023. 1. 30.
[함수] range() 과 enumerate() range 함수 range([strat,] stop [,step]) 필요한 만큼의 숫자를 만들어내는 유용한 기능. for문과 함께 자주 사용되는 함수. 이 함수는 입력받은 숫자에 해당되는 범위의 값을 반복 가능한 객체로 만들어 리턴. # range(stop) : 0 ~ stop-1 까지의 정수 print(range(5), type(range(5))) print(tuple(range(5))) print(set(range(5))) print(list(range(5))) for i in range(5): print(i, end=' ') print() # range(start,stop) : start ~ stop-1 까지의 정수 print(list(range(5, 10))) # range(start,stop, .. 2023. 1. 22.
[알고리즘/Python] BFS(너비우선탐색) BFS (너비우선탐색) Breath-First Search, 그래프에서 가까운 부분을 우선적으로 탐색하는 알고리즘이다. 너비 우선 탐색이라고도 한다. 데이터가 N개 있을때 O(N)시간 복잡도를 가진다. 일반적인 경우 실제 수행시간은 DFS보다 좋은편이다. [DFS vs BFS] 동작 방식 동작 원리 구현 인접한 노드가 여러개라면? DFS 멀리 있는(깊게 있는)노드 부터 탐색 스택 재귀 함수 이용 한개씩 넣음 BFS 가까운 노드부터 탐색 큐 큐 자료구조 이용 한번에 다 넣음 BFS 동작과정 1. 탐색 시작 노드를 큐에 삽입하고 방문 처리를 한다. 2. 큐에서 노드를 꺼내 해당 노드의 인접노드 중에서 방문하지 않은 노드를 모두 큐에 삽입하고 방문처리를 한다, 3. 2번과정을 더이상 수행할 수 없을 때까지 반.. 2023. 1. 18.
728x90
반응형