SW개발
[Django]1.11에서 3.2로 버전 업그레이드 방법 (마이그레이션)
이번 게시물에서는 실제 운영중인 서비스의 장고 버전을 업그레이드 하면서 좋은 팁들과 경험을 공유해보려고 합니다. 관련 공식 문서의 링크는 아래와 같습니다. https://docs.djangoproject.com/ko/3.2/howto/upgrade-version/ Django를 최신 버전으로 업그레이드하고 있습니다. | Django 문서 | Django Django The web framework for perfectionists with deadlines. Overview Download Documentation News Community Code Issues About ♥ Donate docs.djangoproject.com 1. 하나의 기능 버전을 차례로 올리는 것이 좋습니다. 1.11을 사용중이라..
[백준]1197번 - 최소 신장 트리, Kruskal, Prim
https://www.acmicpc.net/problem/1197 1197번: 최소 스패닝 트리 첫째 줄에 정점의 개수 V(1 ≤ V ≤ 10,000)와 간선의 개수 E(1 ≤ E ≤ 100,000)가 주어진다. 다음 E개의 줄에는 각 간선에 대한 정보를 나타내는 세 정수 A, B, C가 주어진다. 이는 A번 정점과 B번 정점이 www.acmicpc.net 크루스칼 알고리즘 import sys # 특정한 노드의 부모가 누구인지 찾는 함수 def find(target): if target == parent[target]: return target parent[target] = find(parent[target]) return parent[target] # 부모 노드를 합치는 함수 def union(a, b..
[프로그래머스]섬 연결하기 - 그리디, 최소 신장 트리, Kruskal
https://programmers.co.kr/learn/courses/30/lessons/42861 코딩테스트 연습 - 섬 연결하기 4 [[0,1,1],[0,2,2],[1,2,5],[1,3,1],[2,3,8]] 4 programmers.co.kr # 크루스칼 알고리즘 def solution(n, costs): answer = 0 visited = [0] # 크루스칼 알고리즘 적용을 위해 가중치를 오름차순으로 정렬한다 costs.sort(key=lambda x: x[2]) # 방문한 정점의 갯수가 n이 된다면 반복문을 중단 while len(visited) < n: for cost in costs: s, e, c = cost # 시작점과 끝점중 하나라도 방문한 리스트에 들어 있을 경우 if s in vi..
[프로그래머스]섬 연결하기 - 그리디, 최소 신장 트리, Prim
https://programmers.co.kr/learn/courses/30/lessons/42861 코딩테스트 연습 - 섬 연결하기 4 [[0,1,1],[0,2,2],[1,2,5],[1,3,1],[2,3,8]] 4 programmers.co.kr # 프림 알고리즘, 우선순위큐 이용(heapq) import heapq def solution(n, costs): answer = 0 # 각 정점의 인접정보와 가중치를 저장하는 리스트 cost_all = [[]for _ in range(n)] # 방문 체크를 위한 리스트 visited = [] # 우선순위큐 사용 heap = [] # 시작정점을 0으로 선택, 가중치도 0으로 설정(cost, start) heapq.heappush(heap, [0, 0]) # 정..
[프로그래머스]조이스틱 - 그리디
https://programmers.co.kr/learn/courses/30/lessons/42860 코딩테스트 연습 - 조이스틱 조이스틱으로 알파벳 이름을 완성하세요. 맨 처음엔 A로만 이루어져 있습니다. ex) 완성해야 하는 이름이 세 글자면 AAA, 네 글자면 AAAA 조이스틱을 각 방향으로 움직이면 아래와 같습니다. ▲ - 다 programmers.co.kr def solution(name): min_move = len(name) - 1 answer = 0 for index, char in enumerate(name): # 위, 아래로 움직이는 값 구하는 부분, 유니코드를 활용해 반복문이 필요 없다. answer += min(ord(char) - ord('A'), ord('Z') - ord(cha..
[프로그래머스]큰 수 만들기 - 그리디
https://programmers.co.kr/learn/courses/30/lessons/42883 코딩테스트 연습 - 큰 수 만들기 programmers.co.kr def solution(number, k): # 스택을 활용한다 stk = [] # number 리스트를 순회함 for num in number: # 제거해야할 값(k)가 남아있고, stk에 값이 있고, stk의 마지막의 값보다 현재 나온수가 더 크다면 # (큰 숫자가 큰 자릿수를 가지게 하기 위해) # 스택의 마지막 숫자를 없애버리고, 제거해야할 값을 하나 줄임 while k > 0 and stk and stk[-1] < num: stk.pop() k -= 1 # 기본적으로 값을 한개씩 넣어줌, (위의 조건에 부합할 경우에만 스택에서 값..
[프로그래머스]입국심사 - 이분탐색
https://programmers.co.kr/learn/courses/30/lessons/43238 코딩테스트 연습 - 입국심사 n명이 입국심사를 위해 줄을 서서 기다리고 있습니다. 각 입국심사대에 있는 심사관마다 심사하는데 걸리는 시간은 다릅니다. 처음에 모든 심사대는 비어있습니다. 한 심사대에서는 동시에 한 programmers.co.kr def solution(n, times): answer = 0 left, right = 1, max(times) * n while left = n: right = mid - 1 # 최대 인원수보다 심사 가능한 인원이 작다면 예상되는 시간을 늘린다 else: left = mid + 1 # 마지막의 정답은 left값으로 설정 answer = left return an..
[프로그래머스]8주차_최소직사각형 - 위클리 챌린지
https://programmers.co.kr/learn/courses/30/lessons/86491 코딩테스트 연습 - 8주차_최소직사각형 [[10, 7], [12, 3], [8, 15], [14, 7], [5, 15]] 120 [[14, 4], [19, 6], [6, 16], [18, 7], [7, 11]] 133 programmers.co.kr def solution(sizes): max_width = 0 max_height = 0 for card in sizes: # 큰 값을 한쪽으로 몰아 넣는 과정 if card[0] < card[1]: card.reverse() # 큰 값을 갱신하는 부분 max_width = max(max_width, card[0]) max_height = max(max_he..
[프로그래머스]카펫 - 완전탐색
https://programmers.co.kr/learn/courses/30/lessons/42842 코딩테스트 연습 - 카펫 Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다. Leo는 집으로 돌아와서 아까 본 카펫의 노란색과 programmers.co.kr def solution(brown, yellow): panel = brown + yellow answer = [] for width in range(3, panel+1): if ((width-2) * ((panel // width) -2) == yellow): # height 값 answer.append(panel // width) # width 값 answ..
[프로그래머스]소수 찾기 - 완전탐색
https://programmers.co.kr/learn/courses/30/lessons/42839 코딩테스트 연습 - 소수 찾기 한자리 숫자가 적힌 종이 조각이 흩어져있습니다. 흩어진 종이 조각을 붙여 소수를 몇 개 만들 수 있는지 알아내려 합니다. 각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때, 종이 programmers.co.kr from itertools import permutations import math def solution(numbers): case = [] answer = 0 for i in range(len(numbers)): permu = list(map(''.join, permutations(numbers, i+1))) for j in permu: cas..