오히려 좋아..

상황이 나쁘게만 흘러가는 것 같을 때 외쳐보자.. .

궁금한 마음으로 포트폴리오 보기

분류 전체보기 210

Django - 관리자 페이지에서 엑셀 출력 방법

한글 출력 때문에 꽤 고생했다.. HttpResponse에서 charset ='euc-kr'로 바꿔 출력하면 된다. #app -> admin.py 에 다음과 같이 작성한다. actions = ["export_as_csv"] def export_as_csv(self, request, queryset): """ return Export as csv File """ meta = self.model._meta #모델이름을 불러온다. response = HttpResponse(content_type="text/csv") #기본 인코딩 방식은 utf-8이므로 한글 출력을 원할때는 아래 주석과 같이 작성한다. #response = HttpResponse(content_type="text/csv", charset = ..

Django - 사용자별 관리자 페이지 접근권한 수정

관리자 페이지는 다양한 사람들이 오갈 수 있다. 그렇다면 사용자 별로 관리자 페이지 접근권한을 제한할 수 없을까? user app을 하나 생성 후 Custom된 User 모델을 사용한다. from django.contrib.auth.models import AbstractBaseUser,BaseUserManager,PermissionsMixin from django.db import models class UserManager(BaseUserManager): use_in_migrations = True def create_user(self, email, nickname, password=None): if not email : raise ValueError('must have user email') use..

[Django] CSRF Forbbiden

CSRF Fobbiden CSRF란? Cross-site Request Forgery의 약자로 해석하면 사이트간 요청위조를 의미한다. 사용자가 자신의 의지와는 무관하게 공격자가 의도한 행위를 특정 웹사이트를 요청하게 하는 공격을 의미한다. 공격자가 사이트의 URL 패턴을 해석해 비밀번호 변경이나 개인정보 접근 권한을 주는 URL을 특정 사용자에게 보내고 클릭했을 때 공격자가 원하는 행위를 웹사이트에 요청하게 된다. 이를 막기 위해 Django에서는 1.2 버전부터 모든 POST방식의 폼 전송시 hidden 필드로 세션에 따른 임의의 키를 제공하고 요청의 키값이 매번 유효한지 사용한다. 대표적으로 사용되는 방식은 아래와 같이 {% csrf_token %} 를 POST가 사용된 폼 템플릿에 삽입해야한다.

09/04 캐슬 디펜스 BOJ 17135 파이썬

https://www.acmicpc.net/problem/17135 17135번: 캐슬 디펜스 첫째 줄에 격자판 행의 수 N, 열의 수 M, 궁수의 공격 거리 제한 D가 주어진다. 둘째 줄부터 N개의 줄에는 격자판의 상태가 주어진다. 0은 빈 칸, 1은 적이 있는 칸이다. www.acmicpc.net 1. 풀이 삼성 A형 기출 문제/구현과 브루트포스 반복문이 다음과 같은 방식으로 진행된다. 궁수의 배치를 바꿔가면서 아래를 진행한다. 1. 공격할 대상 찾기 2. 공격 3. 적 좌표 업데이트 4. 공격한 대상 제거 게임 맵 전체를 갖고 연산을 수행하는게 아니라 목표를 갖는 배열을 따로 만들어서 관리하는게 낫다 def calc_distance(case): #궁수별 공격가능한 좌표를 찾아서 저장해준다. poss..

09/03 미확인 도착지 BOJ 9370

https://www.acmicpc.net/problem/9370 9370번: 미확인 도착지 (취익)B100 요원, 요란한 옷차림을 한 서커스 예술가 한 쌍이 한 도시의 거리들을 이동하고 있다. 너의 임무는 그들이 어디로 가고 있는지 알아내는 것이다. 우리가 알아낸 것은 그들이 s지점에서 www.acmicpc.net 1. 풀이 문제 : BOJ 9730 미확인 도착지 알고리즘 유형 : 다익스트라 시작점 A에서 T까지 가는 최단 경로중 경유지에 g,h 노드가 있는지 확인하는 문제였다. 맨 처음 풀 때는 최단경로를 지나는 경로중에 g,h가 있으면 출력하도록 했는데 최단 경로가 여러개 있는 경우를 잡지 못해 실패했다. S에 T까지 가는 최단 경로중 g,h가 포함되어 있음을 보장하기 위해선 다음을 만족해야한다. ..

09/02 교환 BOJ 1039 파이썬

https://www.acmicpc.net/problem/1039 1039번: 교환 첫째 줄에 정수 N과 K가 주어진다. N은 1,000,000보다 작거나 같은 자연수이고, K는 10보다 작거나 같은 자연수이다. www.acmicpc.net 1. 풀이 : 1774ms BOJ 1039 교환 파이썬 BFS 문제 맨 처음에 모든 자릿수에 대해 방문여부를 확인 하는 배열을 만들려고 했지만 자꾸 시간초과가 났다. 전체 숫자 범위(1에서 1,000,000)와 모든 깊이 범위에 대해 방문 여부를 나타내는 배열을 만든뒤 BFS를 수행한다. N, K = input().split() M = len(N) #전체 자릿수 K = int(K) #전체 숫자 범위와 모든 깊이 범위에 대해 방문 여부를 나타내는 배열 cache =[[..

상호 배타적 집합 (Disjoint Set) / Union Find/ 파이썬

1. 상호 배타적 집합과 유니온 파인드 상호 배타적 집합이란 서로간의 교집합이 없는 부분집합을 의미한다. 이를 표현하기 위해 유니온 파인드(Union Find) 라는 자료구조를 사용한다. 상호 배타적 자료구조를 표현하기 위해선 크게 3가지 연산이 필요하다. 1. 초기화(Initialization) : n개의 원소를 n개의 집합에 포함되어 있도록 초기화 2. 합치기(Union) : 두 원소에 대해 이 두 원소가 주어질 때 이들이 속한 두 집합을 하나로 합친다. 3. 찾기(Find) : 임의의 원소가 어떤 집합에 속해 있는지 반환 => 이러한 연산을 클래스로 구현해주면 된다. 2. 구현 다음은 파이썬으로 구현한 Navie한 Union 파인드이다. class NaiveDisjointSet(): parent =..

08/30 카드게임 BOJ 10835 파이썬

https://www.acmicpc.net/problem/10835 10835번: 카드게임 첫 줄에는 한 더미의 카드의 개수를 나타내는 자연수 N(1 ≤ N ≤ 2,000)이 주어진다. 다음 줄에는 왼쪽 더미의 카드에 적힌 정수 A(1 ≤ A ≤ 2,000)가 카드 순서대로 N개 주어진다. 그 다음 줄에는 오�� www.acmicpc.net 1. 풀이 다이나믹 프로그래밍 문제다. 규칙 1, 2, 3에 따라 채워가면 되는 문제로 bottom up 방식을 사용했다. * 먼저 카드 개수가 N이라고 할 때 N*N을 만들고 뒤쪽에서 부터 채워간다. * i 인덱스는 left의 카드번호 j 인덱스는 right 의 카드번호를 의미한다. * left[i] > right[j] 인 경우에는 오른쪽 카드를 버리고 스코어에 버..