GIS에서 PostgreSQL을 사용하는 이유 MYSql 이나 오라클처럼 잘 알려진 데이터베이스를 놔두고 굳이 Postgresql 을 사용하는 이유는 공간데이터에 관련된 함수를 가장 잘 제공하기 때문이다. Postgresql 은 자체적으로 Postgis 라는 확장 프로그램을 제공하는데 이 Postgis 에서 공간데이터로처리할 수 있는 거의 모든 함수를 기본적으로 제공하기 때문에 다른 DB들보다 GIS를 서비스하기에 유용하다. 또한, Postgresql 은 shp 파일도 바로 import 시킬 수 있다. 설치 https://www.postgresql.org/ 15.2버전을 기준으로 설치를 진행했으며 추후 PostGIS 설치시 버전을 맞춰줘야 하므로 버전 check가 필요하다.
문제 https://www.acmicpc.net/problem/3980 3980번: 선발 명단 각각의 테스트 케이스에 대해서, 모든 포지션의 선수를 채웠을 때, 능력치의 합의 최댓값을 한 줄에 하나씩 출력한다. 항상 하나 이상의 올바른 라인업을 만들 수 있다. www.acmicpc.net 설계 - dfs를 들어가며 11명의 선수를 확인한다. - 자리가 배치된 선수 번호를 visit 배열에 추가 및 삭제하며 한 번호당 한명씩만 들어가게 한다. 파이썬 def dfs(sumV, level): global maxV, visit if level == 11: if maxV < sumV: maxV = sumV return for i in range(11): if arr[level][i] and i not in vis..
문제 https://www.acmicpc.net/problem/1032 1032번: 명령 프롬프트 첫째 줄에 파일 이름의 개수 N이 주어진다. 둘째 줄부터 N개의 줄에는 파일 이름이 주어진다. N은 50보다 작거나 같은 자연수이고 파일 이름의 길이는 모두 같고 길이는 최대 50이다. 파일이름은 www.acmicpc.net 설계 - 주어지는 입력값은 모두 같은 길이로 주어진다. 파이썬 N = int(input()) arr = [input() for _ in range(N)] answer = '' for i in range(len(arr[0])): now = arr[0][i] flag = 0 # 하나라도 일치하지 않을 경우 표시 for j in range(1, N): if now != arr[j][i]: f..
문제 https://www.acmicpc.net/problem/1283 1283번: 단축키 지정 첫째 줄에 옵션의 개수 N(1 ≤ N ≤ 30)이 주어진다. 둘째 줄부터 N+1번째 줄까지 각 줄에 옵션을 나타내는 문자열이 입력되는데 하나의 옵션은 5개 이하의 단어로 표현되며, 각 단어 역시 10개 이하 www.acmicpc.net 설계 - 1. 띄어쓰기를 기준으로 나눠진 단어의 첫번째 이니셜만 확인한다. - 1번 조건을 만족하지 못했을 경우 각 단어의 문자를 하나씩 확인한다. 파이썬 bucket = [0] * 100 N = int(input()) for _ in range(N): arr = list(map(str, input().split())) shortcut = 0 # 단축키가 지정되어있는지 확인 #..
환경변수 파일이란? - 애플리케이션이 실행될 때 특정 값을 넘길 수 있는 변수를 의미한다. 웹 애플리케이션 관점에서는 .env 파일에 정의된 변수를 의미하며, 미리 정의된 값을 애플리케이션에서 활용하고 싶을 때 사용한다. - API_KEY, DB 정보, TOKEN등 git, 오픈소스에 올리면 안되는 값들을 따로 저장하고 소스코드 내에서 하드코딩하지 않고 변수로 사용할 수 있다. .env 파일 생성하기 - 프로젝트 최상위 루트에 .env 파일을 생성한다. - 외부 파일(.env)에 환경변수를 정의하여 변수로 받아오면 보안과 유지보수가 용이하다. .env 사용하기 process.env.REACT_APP_ 는 예약어이므로, 다른 이름은 사용하면 React가 인식하지 못한다. 때문에 모든 환경변수 앞에 REAC..
문제 https://www.acmicpc.net/problem/2302 2302번: 극장 좌석 주어진 조건을 만족하면서 사람들이 좌석에 앉을 수 있는 방법의 가짓수를 출력한다. 방법의 가짓수는 2,000,000,000을 넘지 않는다. (2,000,000,000 < 231-1) www.acmicpc.net 설계 - vip 사이의 구간별 자리수를 cal 함수에 넣는다. - cal 함수로 구간별 경우의 수를 구한 뒤 answer에 곱한다. 파이썬 # 앉을 수 있는 경우의 수를 계산하는 점화식 함수 def cal(n): if n == 1: return 1 elif n == 2: return 2 elif n == 3: return 3 else: dp = [0] * (n + 4) dp[0], dp[1] = 1, 1..
문제 https://www.acmicpc.net/problem/2304 2304번: 창고 다각형 첫 줄에는 기둥의 개수를 나타내는 정수 N이 주어진다. N은 1 이상 1,000 이하이다. 그 다음 N 개의 줄에는 각 줄에 각 기둥의 왼쪽 면의 위치를 나타내는 정수 L과 높이를 나타내는 정수 H가 한 개의 www.acmicpc.net 설계 파이썬 N = int(input()) arr = [list(map(int, input().split())) for _ in range(N)] arr.sort() # 가장 높은 기둥의 크기와 index 찾기 maxI, maxV = 0, 0 for i in range(N): if maxV < arr[i][1]: maxV = arr[i][1] maxI = i # 앞에서부터 가..
문제 https://www.acmicpc.net/problem/1158 1158번: 요세푸스 문제 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000) www.acmicpc.net 설계 파이썬 N, K = map(int, input().split()) arr = [i + 1 for i in range(N)] answer = [] now = K - 1 while len(arr): answer.append(arr[now]) arr.pop(now) now = now + K - 1 # pop을 먼저 했으므로 숫자 1개가 줄어든다. if len(arr) > 0: # zero division 방지 now %= len(arr) # 결과 출력 print('', sep='')
문제 https://school.programmers.co.kr/learn/courses/30/lessons/43165# 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 설계 파이썬 def dfs(level, sumV, numbers, target): global answer if level == len(numbers): if sumV == target: answer += 1 return for i in range(2): if i == 0: dfs(level+1, sumV + numbers[level], numbers, target) elif i == 1:..
문제 https://school.programmers.co.kr/learn/courses/30/lessons/131701 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 설계 파이썬 - 주어진 배열 × 2를 하여 배열이 순회하는 형태로 만들어준다. def solution(elements): answer = [] N = len(elements) # elements를 2배로 늘리기 때문에 원래 길이를 저장한다. elements = elements * 2 # 수열을 2배로 늘려 index를 순환시킨다. for i in range(N): for j in range..