목록분류 전체보기 (303)
내 잡다한 노트
가상환경을 활성화시킨다. 해당 경로에 들어가서 django-admin startproject 프로젝트이름 . 명령어를 입력한다. . 까지 들어가야 하는 것에 주의 해당 경로까지 들어가서 했기 때문에 . 만 붙이면 된다. 이렇게 프로젝트를 만들었다. 파이참으로 들어가서 terminal에서 python manage.py startapp 폴더이름 을 입력해주면 폴더가 하나 생성이 된다. 이곳에서 이제 작업을 해주면 된다. 웹페이지를 실행 시키는 명령어는 python manage.py runserver 이다.
Django는 파이썬 웹 프레임워크이다. 가상환경을 통해 편하게 패키지들을 관리할 생각이다. 가상환경은 패키지 및 버전관리를 하기 위한 독립적인 가상환경이다. 다른 프로젝트와 다른 프로젝트의 충돌을 없애기 위해, 관리를 하기 위해 꼭 필요한 것이다. #가상환경 생성하기 conda create -n 가상환경이름 가상환경 설정이 완료되면 Anaconda3/envs/ 경로에 생성한 가상환경을 볼 수 있다. #가상환경 확인 conda info --envs #가상환경 활성화 conda activate 가상환경이름 활성화가 되면 맨 왼쪽에 ( ) 안에 들어있는 단어가 가상환경 이름으로 바뀔 것이다. 기본 상태는 (base) #가상환경 비활성화 conda deactivate #가상환경에 라이브러리 설치하기 가상환경을..
문제) https://www.acmicpc.net/problem/16724 16724번: 피리 부는 사나이 첫 번째 줄에 지도의 행의 수를 나타내는 N(1 ≤ N ≤ 1,000)과 지도의 열의 수를 나타내는 M(1 ≤ M ≤ 1,000)이 주어진다. 두 번째 줄부터 N개의 줄에 지도의 정보를 나타내는 길이가 M인 문자열이 주 www.acmicpc.net 소스코드) import sys sys.setrecursionlimit(10**8) n, m = map(int, input().split()) dirmap = [sys.stdin.readline().rstrip() for _ in range(n)] #print(dirmap) visited = [[False] * m for _ in range(n)] fini..
문제 ) https://www.acmicpc.net/problem/6064 6064번: 카잉 달력 입력 데이터는 표준 입력을 사용한다. 입력은 T개의 테스트 데이터로 구성된다. 입력의 첫 번째 줄에는 입력 데이터의 수를 나타내는 정수 T가 주어진다. 각 테스트 데이터는 한 줄로 구성된다. www.acmicpc.net 쉽다고 생각했는데 한참을 애먹은 문제... 시간제한은 1초인데 m, n은 4만까지 있고 그거마저도 test_case가 여러개가 있어서 브루트포스로 하면 1초만에 못한다고 생각을 했는데 가능하더라....ㅋ;; 내 힘으로 풀지 못해 다른 사이트의 코드를 참고했다. 소스코드 ) for _ in range(int(input())): m, n, x, y = map(int, input().split()..
'호'는 한자로 서로 호, '제'는 덜 제 라고 한다. 서로 두 수를 나눈다라는 뜻이라고 한다. - 최대공약수 - 2개의 자연수 a, b에 대해서 a를 b로 나눈 나머지가 r일 때, a와 b의 최대공약수는 b와 r의 최대공약수와 같다. 이 성질을 이용해 반복해서 나머지가 0이 나올 때까지 나누면 그 수가 최대공약수라고 한다. function gcd(a, b) { let r while (b != 0) { r = a % b a = b b = r } return a } - 최소공배수 - a와 b의 최소공배수는 a와 b의 곱을 a와 b의 최대공약수를 나눈 것과 같다. function lcm(a, b) { return (a * b) / gcd(a, b) } 위에서 구한 최대공약수로 최소공배수는 쉽게 구할 수 있다..
언제 써야 하는가? ) '모든 정점'에서 '모든 정점'으로의 최단 경로를 구하고 싶다면 플로이드 와샬 알고리즘을 사용해야 한다 핵심 아이디어 ) '거쳐가는 정점'을 기준으로 최단거리를 구하는 것. 각각의 정점이 다른 정점으로 가는 비용을 이차원 배열의 형태로 저장한다. 저울 소스코드중... graph = [[INF] * (n + 1) for _ in range(n + 1)] for a in range(1, n + 1): for b in range(1, n + 1): if a == b: graph[a][b] = 0 for _ in range(m): a, b = map(int, input().split()) graph[a][b] = 1 a -> b로 갈 수 있으면 1로 해주고 가지 못하는 방향이라면 INF로..
문제) https://www.acmicpc.net/problem/10159 10159번: 저울 첫 줄에는 물건의 개수 N 이 주어지고, 둘째 줄에는 미리 측정된 물건 쌍의 개수 M이 주어진다. 단, 5 ≤ N ≤ 100 이고, 0 ≤ M ≤ 2,000이다. 다음 M개의 줄에 미리 측정된 비교 결과가 한 줄에 하나씩 www.acmicpc.net 처음부터 접근 방법이 잘못돼 한참을 헤매었다. bfs로 풀려고 했는데 나중에 보니 간선의 가중치가 다르더라... 그걸 너무 늦게 깨달았다. bfs, dfs는 간선의 가중치가 1로 다 같을 때 쓸 수 있는 것인데.... ㅠㅠ 소스코드) n = int(input()) m = int(input()) dp = [[inf] * (n+1) for _ in range(n+1)]..
dp = [[0] * len(b) for _ in range(len(a))] dp가 이런 값일때 출력으로 확인해주면 길~게 출력이 돼서 확인하기 힘든 경우가 있다. 그럴 땐 print(*dp, sep="\n") 이렇게 작성해주면 [0, 0, 0, 0, 0, 0, 0] [0, 0, 0, 0, 0, 0, 0] [0, 0, 0, 0, 0, 0, 0] [0, 0, 0, 0, 0, 0, 0] [0, 0, 0, 0, 0, 0, 0] [0, 0, 0, 0, 0, 0, 0] [0, 0, 0, 0, 0, 0, 0] 이렇게 출력이 돼서 쉽게 디버깅을 해줄 수 있다. 진짜 개꿀 리스트앞에 * 이게 리스트 안에서 가장 겉에 있는 값을 한꺼번에 넘겨주기 때문이다. 즉, dp가 2차원배열이니 겉에 값인 2차원 안에 있는 값을 한..