[백준]1018번 체스판 다시 칠하기 - 완전 탐색
·
SW개발/코딩테스트
https://www.acmicpc.net/problem/1018 1018번: 체스판 다시 칠하기 첫째 줄에 N과 M이 주어진다. N과 M은 8보다 크거나 같고, 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 보드의 각 행의 상태가 주어진다. B는 검은색이며, W는 흰색이다. www.acmicpc.net n, m = map(int, input().split()) chess = [[0] * m for i in range(n)] for i in range(n): chess[i] = list(input()) change = 32 # 가장 최대로 많이 바꾸는 경우 for i in range(n): for j in range(m): if i + 8
[Django]Django + Nginx + Gunicorn 연동하기 1
·
SW개발/Django
저번 포스팅에서는 가상환경 설정과 그 위에 Django 를 설치하였다. 이번에는 Django, Nginx, Gunicorn 을 서로 연동하는 작업을 해볼 것이다. Gunicorn 사용 이유 "Django의 내장서버 (runserver)는 실서비스에 부적합하다" Django 에는 개발용으로 runserver 라는 내장 서버를 탑재하고 있다. 실제 서비스를 하기 전에 개발을 하면서 이용하게 되는 서버이다. 특징 중 하나는 소스코드의 수정이 이루어지면 이를 detect 하여 바뀐 것이 있을 경우 서버를 reload 하게 된다. 하지만 실제 서비스를 하기에 성능상의 한계, 보안 등 다양한 문제점이 존재해 was + wsgi 조합(Nginx + Gunicorn)을 사용하게 된다. Django.core.server..
[백준]7568번 덩치 - 완전 탐색
·
SW개발/코딩테스트
n = int(input()) person = [[0] * 2 for i in range(n)] answer = [1] * n # 순위 카운트 for i in range(n): person[i][0], person[i][1] = map(int, input().split()) for i in range(n): for j in range(n): if person[i][0] < person[j][0] and person[i][1] < person[j][1]: # 자신보다 키 몸무게 클 경우에만 answer[i] += 1 # 카운트를 함 for i in range(n): print(answer[i] , end=' ') # 출력 코드 설명 몸무게와 키를 저장하기 위한 person, 순위를 매기기 위한 answer..
[백준]2231번 분해합 - 완전 탐색
·
SW개발/코딩테스트
n = int(input()) for i in range(1, n + 1): a = list(str(i)) if i + sum(map(int, a)) == n: print(i) break if i == n: print(0) 코드 설명 반복문은 1부터 n 까지 진행한다. 입력을 받을때 숫자를 분해시켜 저장하기 위해 str() 로 변환후 list() 함수를 이용한다. 만약 본래의 숫자 + 분해시켜 저장한 숫자의 합이 n 과 같다면 그 수를 출력시키고 종료한다. 마지막 반복인 i == n 이 될 경우에는 생성자가 없으므로 0을 출력한다. Point : 숫자를 분해하는 작업을 위해 list 형으로의 변환이 필요하다. 또한 1부터 반복되기에 조건을 만족하면 그것이 바로 가장 작은 생성자가 된다.
[백준]2798번 블랙잭 - 완전 탐색
·
SW개발/코딩테스트
n, m = map(int, input().split()) num = list(map(int, input().split())) length = len(num) ans = 0 # 3중 포문을 통하여 차례로 탐색 for i in range(length - 2): for j in range(i + 1, length - 1): for x in range(j + 1, length): if num[i] + num[j] + num[x] > m: # 3개를 더한 값이 크다면 넘어감 continue else: # m 보다 크지 않다면 저장된 값과 새로 더한 값중 큰것을 선택 ans = max(ans, num[i] + num[j] + num[x]) print(ans) 코드 설명 모든 경우를 탐색하는 완전 탐색의 문제이므로..
[Django]Python 가상환경 만들기 / Django 설치
·
SW개발/Django
가상환경을 사용하는 이유 "독립적인 작업환경에서 작업이 가능하다" 프로젝트를 진행하다보면 여러 라이브러리와 패키지를 다운받아서 사용할 경우에 의존성에 문제가 생겨 충돌이 되는 경우가 생기게 된다. 또는 특정 라이브러리는 하위 버전만 지원하는 경우가 있다. 이러한 경우에는 버전을 여러개 그리고 독립적인 작업환경을 구성할 수 있는 venv 환경을 이용함으로써 해결할 수 있다. 먼저 파이썬에는 프로젝트별로 독립된 가상 환경을 만들어주는 virtualenv 라는 툴이 있다. 이를 설치하여 가상환경을 구성할 수 있다. (가상환경을 구성하기 전에 python 설치는 선행되어야 한다.) 가상환경을 위한 virtualenv 설치 $ sudo pip install virtualenv venv 생성하기 $ virtuale..
[백준]12865번 평범한 배낭 - DP
·
SW개발/코딩테스트
n, k = map(int, input().split()) weight = [[0] * 2 for i in range(n + 1)] # 1부터 인덱스를 사용하기 위해 dp = [[0] * (k + 1) for i in range(n + 1)] # 가방의 크기 * 갯수 for i in range(1, n + 1): weight[i][0], weight[i][1] = map(int, input().split()) for i in range(1, n + 1): for j in range(1, k + 1): if j - weight[i][0] >= 0: # 가방의 크기 - 물건의 크기 >= 0 -> 즉 가방에 넘치지 않게 담을 수 있는가? # 이전의 값(i-1)과 물건을 담기전+물건의 가치 중 큰 것 선택 dp..
[백준]1912번 연속합 - DP
·
SW개발/코딩테스트
n = int(input()) num = list(map(int, input().split())) dp = [0] * n dp[0] = num[0] for i in range(1, n): dp[i] = max(dp[i - 1] + num[i], num[i]) # 직전수+현재수와 현재수를 비교해 큰것을 저장 print(max(dp)) 코드 설명 먼저 n이 1인 경우를 대비해 dp[0]에는 num[0] 값을 넣어준다. 반복문을 통해 직전수+현재수 vs 현재수 중 큰 값을 저장시키면서 반복한다. 저장된 값중 가장 큰 값을 출력하면 연속합중 가장 큰 값을 구할 수 있다. Point : 큰 값을 저장시키기 위해서 직전까지 누적된 합과 현재의 수를 비교하여 큰 것을 저장한다. 이 과정을 진행하는 이유는 직전까지의 ..
[Linux, Unix]Bash shell 프로그래밍 문제 풀이
·
SW개발/Linux, Unix
1. 현재 자기자신의 pc(linux 기준)의 cpu 모델명, OS 종류 및 버전, kernel 버전을 출력하시오. #!bin/bash echo 'cpu model name' echo `cat /proc/cpuinfo | grep model*` # cpu 모델명 출력 echo 'os version' echo `cat /etc/issue` # OS 종류 및 version echo 'kernel version' echo `cat /proc/version` # kernel version 2. 매주 일요일, 새벽 4시 30분과 낮 12시 30분에, 현재디렉토리에 test.txt 파일을 생성하는 crontab을 작성하시오. #!bin/bash echo 'crontable (touch) register' echo ..
[Linux, Unix]명령어 응용 및 문제풀이2
·
SW개발/Linux, Unix
1.소유자가 george이고 그룹이 others일때 data파일의 소유자와 그룹을 하위디렉토리까지 동시에 변경하시오. chown -r geroge:others data 2.현재 로그인한 사용자의 목록에서 2016-­01-­07에 접속한 사용자를 출력하시오. who | grep '2016-01-07' 3.접근권한이 755인 data 디렉토리를 생성하시오 (명령어 1개 이용). mkdir -m 755 data 4.현재 디렉토리에서 링크파일만 찾는 lnfind란 alias를 생성하시오. alias lnfind='find ./ -type l' 5.현재 디렉토리에서 24시간 내에 수정된 파일을 찾으시오. find ./ -mtime -1 6.현재 디렉토리에서 test로 시작하는 디렉토리만 찾아 삭제하시오. find..