728x90
반응형

Python 56

[python]백준 11724번: 연결 요소의 개수(그래프)

# 11724 연결 요소의 개수 https://www.acmicpc.net/problem/11724 11724번: 연결 요소의 개수 첫째 줄에 정점의 개수 N과 간선의 개수 M이 주어진다. (1 ≤ N ≤ 1,000, 0 ≤ M ≤ N×(N-1)/2) 둘째 줄부터 M개의 줄에 간선의 양 끝점 u와 v가 주어진다. (1 ≤ u, v ≤ N, u ≠ v) 같은 간선은 한 번만 주 www.acmicpc.net ⭐ 코드 import sys input = sys.stdin.readline sys.setrecursionlimit(10**7) N, M = map(int, input().split()) graph = [[] for i in range(N+1)] visited = [0] * (N+1) for _ in r..

Algorithm 2023.01.22

[python] 프로그래머스 안전지대(방향탐색)

# 120866 안전지대 https://school.programmers.co.kr/learn/courses/30/lessons/120866 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr ⭐ 코드 def solution(board): N = len(board) dx = [-1, 1, 0, 0, -1, -1, 1, 1] dy = [0, 0, -1, 1, -1, 1, -1, 1] # 지뢰 설치 boom = [] for i in range(len(board)): for j in range(len(board)): if board[i][j] == 1: boom.a..

Algorithm 2023.01.19

[python]백준 1654번: 랜선 자르기(이진탐색)

# 1654 랜선 자르기 https://www.acmicpc.net/problem/1654 1654번: 랜선 자르기 첫째 줄에는 오영식이 이미 가지고 있는 랜선의 개수 K, 그리고 필요한 랜선의 개수 N이 입력된다. K는 1이상 10,000이하의 정수이고, N은 1이상 1,000,000이하의 정수이다. 그리고 항상 K ≦ N 이다. 그 www.acmicpc.net 코드 K, N = map(int, input().split()) already = [int(input()) for _ in range(K)] start, end = 1, max(already) while start = N: start = mid + 1 else: end = mid - 1 print(end) 📝 풀이 주어진 랜선을 잘라서 필요한 ..

Algorithm 2023.01.18

[DRF] 게시판 기능(CRUD) 구현하기

이전에 ViewSets을 하면서 models.py에 아래와 같이 title과 body field를 생성했었다. from django.db import models from django.conf import settings # Create your models here. class Blog(models.Model): title = models.CharField(max_length=100) body = models.TextField() 하지만 블로그에는 이보다 더 많은 기능이 필요하기 때문에 기능을 더 추가하는 코드를 작성해보고자 한다. 게시글의 id값, 제목, 작성일, 작성자, 본문을 추가하는 코드는 다음과 같다. ✅ models.py from django.db import models from djang..

Python/DRF 2023.01.17

[DRF] 커스텀 유저 구현하기(회원가입/로그인)

Django에서는 기본적으로 사용자 모델인 User 모델을 제공하고 있다. 하지만 임의로 원하는 필드(Nickname, birthday 등)을 가진 사용자 모델을 사용하기 위해서는 custom user 모델을 구현해야 한다. custom user 모델을 구현하기 위해서는 BaseUserManager과 AbstractBaseUser 클래스를 상속받아서 새롭게 구현해야 한다. 여기에서 BaseUserManager는 유저를 생성하는 역할을 하는 헬퍼 클래스이고, AbstractBaseUser는 실제 모델이 상속받아 생성하는 클래스이다. 유저생성을 위해 accounts라는 이름의 앱을 생성해준다. python manage.py startapp accounts ✅ settings.py 앱을 생성 후 setting..

Python/DRF 2023.01.14

[DRF] Generic CBV로 CRUD 구현하기

APIView와 Mixins를 사용한 CRUD는 불필요한 중복이 발생했었다. 이번에는 Generic CBV (Class Based Views)의 상속을 통해 코드의 중복을 좀 더 줄여보고자 한다. ✅ models.py from django.db import models from django.conf import settings # Create your models here. class Blog(models.Model): title = models.CharField(max_length=100) body = models.TextField() 이전에 사용했던 모델과 동일하게 만들어준다. ✅ serializers.py from .models import Blog from rest_framework import ..

Python/DRF 2023.01.12

[DRF] APIView로 CRUD 구현하기

APIview의 기본적인 골격은 아래와 같다. class Class_name(APIView): def method_name(self, request, format=None): # 해당 HTTP method를 어떻게 동작시킬지 정의 method_name으로는 HTTP method인 get, post, delete 등이 존재한다. APIView를 상속 받아서 원하는 기능을 구현하기 위한 HTTP method를 구현하면 된다. ✅ models.py from django.db import models from django.conf import settings # Create your models here. class Blog(models.Model): title = models.CharField(max_leng..

Python/DRF 2023.01.12

SOLID란? 객체지향 설계 5원칙(Python)

✅ SOLID란? SOLID란 로버트 마틴이 2000년대 초에 명명한 객체 지향 프로그래밍의 다섯 가지 기본 원칙을 마이클 페더스가 원칙의 앞 글자를 따서 다시 SOLID라는 이름으로 소개했다. SOLID의 5대 원칙은 다음과 같다. 단일 책임 원칙(Single responsibility principle) : SRP 개방 폐쇄 원칙(Open/closed principle) : OCP 리스코프 치환 원칙(Liskov substitution principle) : LSP 인터페이스 분리 원칙(Interface segregation principle) : ISP 의존관계 역전 원칙(Dependency inversion principle) : DIP ✅ 1.SRP (Single Responsibility) 단..

Computer Science 2023.01.11
728x90
반응형