GitHub

https://github.com/Choidongjun0830

파이썬 160

Baekjoon Online Judge 10610번 파이썬. 그리디.

문제 링크 https://www.acmicpc.net/problem/10610 10610번: 30 어느 날, 미르코는 우연히 길거리에서 양수 N을 보았다. 미르코는 30이란 수를 존경하기 때문에, 그는 길거리에서 찾은 수에 포함된 숫자들을 섞어 30의 배수가 되는 가장 큰 수를 만들고 싶어한 www.acmicpc.net 30의 배수가 되려면, 3의 배수이며, 1의 자리가 0이어야한다. 3의 배수가 되려면, 각 자리 수의 합이 3의 배수가 되어야 한다. 이를 만족시키고, 내림차순 정렬을 하면 30의 배수가 될 수 있는 가장 큰 수를 구할 수 있다. 정답 코드 N= list(map(int,input())) sum = 0 for i in N: sum += i if sum % 3 != 0 or 0 not in ..

Baekjoon Online Judge 2875번. 그리디

문제 링크 https://www.acmicpc.net/problem/2875 2875번: 대회 or 인턴 첫째 줄에 N, M, K가 순서대로 주어진다. (0 ≤ M ≤ 100, 0 ≤ N ≤ 100, 0 ≤ K ≤ M+N), www.acmicpc.net 적어도 여학생이 2명, 남학생이 1명이 있어야 팀 1개가 만들어진다. 그래서 여학생이 2명 이상, 남학생이 1명 이상이고, 인턴십에 간 학생들보다 3명이 많아야 적어도 한 팀이 만들어지므로 ‘while N>=2 and M>=1 and N+M >= K+3:’로 작성한다. 정답 코드 import sys N,M,K = map(int,sys.stdin.readline().split()) team = 0 while N>=2 and M>=1 and N+M >= K+..

Baekjoon Online Judge 11047번 파이썬. 그리디

문제 링크 https://www.acmicpc.net/problem/11047 11047번: 동전 0 첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수) www.acmicpc.net 정답 코드 import sys N, K = map(int,sys.stdin.readline().split()) money = [] for i in range(N): money.append(int(sys.stdin.readline())) count = 0 bill = money[len(money)-1] def greedy(K..

Baekjoon Online Judge 1629번 파이썬. 분할 정복.

문제 링크 https://www.acmicpc.net/problem/1629 1629번: 곱셈 첫째 줄에 A, B, C가 빈 칸을 사이에 두고 순서대로 주어진다. A, B, C는 모두 2,147,483,647 이하의 자연수이다. www.acmicpc.net A^(m+n) = A^m * A^n (A*B)%C = (A%C)*(B%C)%C 위의 지수법칙. 분배 법칙을 알아두어야 한다. 정답 코드 A,B,C = map(int,input().split()) def solution(a,b,c): if b == 1: #a의 1제곱이면. return a%c N = solution(a,b//2,c) # a^(b//2) 구하기 if b % 2 == 0: #b가 짝수 return N*N%c #지수 법칙 사용 else: #b..

Baekjoon Online Judge 1780번 파이썬. 분할 정복.

문제 링크 https://www.acmicpc.net/problem/1780 1780번: 종이의 개수 N×N크기의 행렬로 표현되는 종이가 있다. 종이의 각 칸에는 -1, 0, 1 중 하나가 저장되어 있다. 우리는 이 행렬을 다음과 같은 규칙에 따라 적절한 크기로 자르려고 한다. 만약 종이가 모두 같은 수 www.acmicpc.net 2630번 문제와 유사하다. 다른 점은 9개로 자르는 것이기 때문에 ‘N//3’을 하고, 재귀함수의 시작점. x,y가 9개 있다는 것이다. 정답 코드 N = int(input()) matrix = [list(map(int,input().split()))for i in range(N)] result = [] def solution(x,y,N): number = matrix[x]..

Baekjoon Online Judge 1992번 파이썬. 분할 정복.

문제 링크 https://www.acmicpc.net/problem/1992 1992번: 쿼드트리 첫째 줄에는 영상의 크기를 나타내는 숫자 N 이 주어진다. N 은 언제나 2의 제곱수로 주어지며, 1 ≤ N ≤ 64의 범위를 가진다. 두 번째 줄부터는 길이 N의 문자열이 N개 들어온다. 각 문자열은 0 또 www.acmicpc.net 2630번과 유사한 문제이다. 하지만 2630번처럼 반복문 안에서 프린팅할 문자열 “(“나 “)”를 추가하면 불필요한 경우에도 괄호가 생기기 때문에 반복문 밖에서 추가해주어야 한다, 출력에 신경써서 풀어야한다. 정답 코드 N = int(input()) tree = [list(map(int,input()))for i in range(N)] def solution(x,y,N):..

Baekjoon Online Judge 2630번 파이썬. 분할정복

문제 링크 https://www.acmicpc.net/problem/2630 2630번: 색종이 만들기 첫째 줄에는 전체 종이의 한 변의 길이 N이 주어져 있다. N은 2, 4, 8, 16, 32, 64, 128 중 하나이다. 색종이의 각 가로줄의 정사각형칸들의 색이 윗줄부터 차례로 둘째 줄부터 마지막 줄까지 주어진다. www.acmicpc.net 분할 정복은 문제를 나눌 수 없을 때까지 나누어서 각각 풀고 합병하는 방식이다. 함수를 재귀적으로 호출하여 문제를 해결한다는 특징이 있다. 전체 종이를 ‘N//2’ 절반씩 나누어 함수에 넣고 더 이상 나누어지지 않을 때까지 함수를 계속해서 불러왔다. 정답 코드 import sys N = int(sys.stdin.readline()) whole = [list(m..

노마드 코더 에어비앤비 클론 코딩 #16 API TESTING

API Testing: 우리 코드에서 발생할 수 있는 모든 케이스를 작성해놓고 명령어 하나로 테스트하는 것이다. 그 명령어인 'python manage.py test'를 입력하면, 파이썬은 내가 작성한 모든 테스트를 실행한다. APITestCase class 안에 있는 테스트 메소드 명명 규칙: 만약 django가 내 코드를 테스트해주기를 바란다면, 그 테스트 코드는 반드시 'test_'로 시작하는 메소드 안에 작성되어야 한다. 'self.client...'는 우리의 API로 get/post/put/delete request 등을 보낼 수 있게 해준다. 'python manage.py test'는 우리가 만들어둔 DB에서 일어나는게 아니라 새로운 DB를 만들어서 실행하고 테스트가 끝나면 새로 만들어진 D..

노마드 코더 에어비앤비 클론 코딩 #15 AUTHENTICATION

Authentication django는 우리가 바로 사용할 수 있는 인증시스템이 기본으로 있다. 로그인하면 django는 백엔드에서 세션을 생성하고 자동으로 쿠키도 준다. 매번 django 웹사이트를 방문할 때마다, 쿠키는 django로 가고, django는 쿠키를 읽어서 request.user에 user와 쿠키 정보를 함께 넣는다. 이런 기본 인증 시스템이 아닌 직접 커스텀 인증을 만들 수 있다. 이런 방법에는 토큰 인증, JWT인증 등이 있다. Custom Authentication #config/authentication.py from rest_framework.authentication import BaseAuthentication from rest_framework.exceptions impo..

노마드 코더 에어비앤비 클론 코딩 #12 USERS API

User Profile # users/serializers.py class PrivateUserSerializer(ModelSerializer): class Meta: model=User exclude = ( "password", "is_superuser", "id", "is_staff", "is_active", "first_name", "last_name", "groups", "user_permissions", ) #users/ views.py #.../api/v1/users/me 내 프로필만 보는 url class Me(APIView): permission_classes = [IsAuthenticated] #자세한 정보는 로그인한 본인에게만 보여야하므로. def get(self, request): #..

728x90