aytekin의 노트 133

백준 1138번: 한 줄로 서기(greedy)

입력값만큼 키가 큰 사람을 앞에 두고 줄을 세우는 문제이다. 왼쪽부터 숫자 0의 개수를 기준으로 위치를 찾아 줄을 세우면 된다. 예를 들어 2,1,1,0 이면 [0,0,1,0] -> 0을 2개 지나친 이후 1 위치 [0,2,1,0] -> 0을 1개 지나친 이후 2 위치 [0,2,1,3] -> 0을 1개 지나친 이후 3 위치 [4,2,1,3] -> 0을 0개 지나친 이후 4 위치 # 1138번 : 한 줄로 서기 n = int(input()) li = list(map(int,input().split())) ans = [ 0 for i in range(n)] for i in range(n): cnt = 0 for j in range(n): if cnt == li[i] and ans[j] == 0: ans[j]..

백준 3109번: 빵집 - 파이썬(greedy)

DFS알고리즘을 알고 있어야 풀 수 있는 문제다. R,C로 행과 열의 값 pipe에 파이프라인 visited에 파이프가 이미 설치되어 있는 곳인지 확인하기 위해 False로 초기화 리스트 이런 변수들을 입력 및 선언하고 왼쪽부터 시작해서 맨 오른쪽이 원웅이네 가게 파이프라인까지 최대한 많은 선을 연결해야 하므로 첫번째 열 에서 파이프라인이 있는 지점 pipe[i][0] == '.' 에서 부터 탐색을 시작한다. solve함수를 호출하여 건물이 있는 지점을 피하며 오른쪽으로 이동하고, 방문했던 지점은 True로 흔적을 남긴다. solve함수 종료조건인 j == C - 1 까지 도착하게 되면 True를 반환하여 cnt를 증가시킨다. # 3109번 : 빵집 def solve(i,j): # 원웅이네 파이프로 무사..

[django] 프로젝트 배포 시 sqlite3 버전 오류

django프로젝트를 만든 후 aws나 gcp에 배포하려고 할 때 sqlite3의 버전 오류가 나는 경우가 많다. 이때 linux기반 OS에서 sqlite3를 쉽게 설치하는 방법이다. linux기반 지식이나 명령어들을 잘 몰라서 많이 해맸는데 아래의 명령어로 쉽게 해결할 수 있었다. 오류 내용 : django.core.exceptions.ImproperlyConfigured: SQLite 3.9.0 or later is required (found 3.7.17). sqlite3.9버전 이상을 설치해주어야 한다. koipkgs에 sqlite3 버전 별 설치파일들이 있고 이 파일들을 찾아서 다운로드 후 설치해주면 된다. 명령어 wget https://kojipkgs.fedoraproject.org//pack..

[django] django.db.utils.OperationalError: table already exist

에러 : table already exist 장고 migration시 table already exist 에러를 해결하는 과정에 대한 블로그입니다. 원인 아래와 같이 같은 이름의 테이블이 이미 존재하기 때문에 python manage.py migrate 할 수 없다는 에러메세지였다. 이 문제를 해결하려면 이미 존재하고 있는 테이블을 지우거나 수정해야 한다. 해결 python manage.py migrate --fake 을 입력하여 테이블이 없는 것으로 간주하고 새로 테이블을 만드는 명령어를 사용하면 됨.

Git 기초 명령어 정리

Git 기초 명령어 정리 git 을 사용하면서 자주 사용하게 되지만 자꾸 잊어버리는 명령어들을 정리한 것이다. git init : git 생성, 시작 git config --global user.name [user name] : git 계정 이름 변경, 수정 git config --global user.email [email address] : git 계정 email 변경, 수정 git clone [git_path] : github에 있는 repository 복사해오기. git status : 스테이징 영역(staging area)과 작업 디렉토리 영역(working directory area)을 확인하기 위해서 사용 Changes to be commited : 스테이징영역으로 넘어가있는 변경내용으로 c..

환경설정/Git 2022.04.26

백준 2847번: 게임을 만든 동준이 - 파이썬(greedy)

가장 높은 레벨이 가장 큰 점수를 얻어야 하는 문제인데 최소한의 횟수를 사용해야 하므로 점수 조정시 다음 레벨과의 점수 차이를 1로 만들어 주면 된다. 문제를 풀 때 주의해야 할 점은 높은 레벨에서부터 비교하면서 점수를 낮춰주어야 한다. 낮은 레벨부터 점수를 낮추게 되면 [5,5,5] > [4,5,5] > [4,4,5] 이런 식으로 점수가 오름차순이 되지 않을 수 있다. 실제로 처음에 이렇게 풀었다가 틀렸었다... # 2847번 : 게임을 만든 동준이 n = int(input()) levels = [] for _ in range(n): levels.append(int(input())) levels.reverse() cnt = 0 for i in range(n-1): while levels[i]

백준 1449번: 수리공 항승 - 파이썬(greedy)

문제를 풀기위해 생각해낸 방법은 "테이프로 막은 부분을 표시해두자" 이다. 표시를 하기 위해서 사용한 방법은 리스트를 넉넉한 크기로 만들어준 뒤 테이프로 막은 부분은 1로 표시하는 것이다. 그래서 변수 명도 flag 로 정했다. (항상 변수명을 정할 때 가장 고민을 많이 하는 것 같다...ㅎㅎ) # 1449번: 수리공 항승 N,L = map(int,input().split()) tape = list(map(int,input().split())) tape.sort() flag = [0 for i in range(10000)] cnt = 0 for i in tape: if flag[i] == 0: cnt += 1 for j in range(L): flag[i+j] = 1 print(cnt)

백준 1543번: 문서 검색 - 파이썬(greedy)

# 1543번: 문서 검색 doc = input() word = input() length = len(word) flag = [0 for i in range(len(doc))] cnt = 0 for i in range(len(doc)): if flag[i] == 1: continue if word == doc[i:i+length]: cnt += 1 for idx in range(i,i+length): flag[idx] = 1 print(cnt) 중복 값을 어떻게 처리하면 좋을지 생각하다가 리스트를 사용해서 한번 본 문자의 인덱스에 표시를 해두는 것으로 구현해보았다. 다행히 한 번에 통과가 되었다. 그런데 이번 문제를 풀면서 새롭게 알게 된 부분은 리스트 슬라이스 작업에는 index out of range..

[django] no such table: auth_user

python manage.py createsuperuser로 아이디와 패스워드를 만들려고 하는데 이런 오류가 뜬다. 구글링을 통해 찾아보니 말 그대로 DB에 테이블이 없어서 나타나는 문제점이라고 한다. 1. python manage.py makemigrations 2. python manage.py migrate 이 두가지 명령어를 순서대로 실행시켜서 migrate를 해주고 나서 다시 createsuperuser하면 된다. 장고 프로젝트를 새로 시작했을 때 기본적으로 세팅이 되어있는 모델들이 있는데 이 모델들도 맨 처음에는 migration을 해주어야한다. python manage.py makemigrations명령어는 모델에 변화가 있거나 모델을 새로 생성했을 경우 변경사항을 업데이트해주는 명령어다. ..

[django] 명령어 정리

django 명령어 정리 장고는 기본적으로 아래의 장고어드민(django-admin)이라는 명령어를 통해서 프로젝트와 앱을 실행시킬 수 있다. 프로젝트 생성 django-admin startproject [프로젝트 이름] 앱 생성 django-admin startapp [앱 이름] 서버시작 python manage.py runserver [포트번호] 장고로 프로젝트를 시작하면 manage.py라는 파일이 자동으로 생성되는데 이 파일이 있는 디렉토리에서 runserver와 포트번호를 붙여서 실행시키면 로컬 서버에서 장고프로젝트를 실행시킬 수 있게 된다! 아니 벌써 장고라는 틀을 가지고 일단 웹을 하나 찍어만들어보긴 한 셈이다. 짝짝짝!!! 이 외에도 django-admin을 치면 사용할 수 있는 명령어들이..