공부하고 기록하는, 경제학과 출신 개발자의 노트

2019/11 30

[Python] 백준 14888. 연산자 끼워넣기

https://www.acmicpc.net/problem/14888 14888번: 연산자 끼워넣기 첫째 줄에 수의 개수 N(2 ≤ N ≤ 11)가 주어진다. 둘째 줄에는 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 100) 셋째 줄에는 합이 N-1인 4개의 정수가 주어지는데, 차례대로 덧셈(+)의 개수, 뺄셈(-)의 개수, 곱셈(×)의 개수, 나눗셈(÷)의 개수이다. www.acmicpc.net 삼성SW역량테스트 기출문제. 연산자를 만들어낼 수 있는 경우의 수를 생성해야 하는데, combinations를 쓰면 (+,*)와 (*,+)가 같은 경우로 인식된다. 모든 경우의 수를 제대로 반영하려면 permutations를 쓸 수 있고, permutations에서 만들어지는 중복 문제는 set()..

[Python] 프로그래머스. 최고의 집합 (Level 3)

https://programmers.co.kr/learn/courses/30/lessons/12938 코딩테스트 연습 - 최고의 집합 | 프로그래머스 자연수 n 개로 이루어진 중복 집합(multi set, 편의상 이후에는 집합으로 통칭) 중에 다음 두 조건을 만족하는 집합을 최고의 집합이라고 합니다. 각 원소의 합이 S가 되는 수의 집합 위 조건을 만족하면서 각 원소의 곱 이 최대가 되는 집합 예를 들어서 자연수 2개로 이루어진 집합 중 합이 9가 되는 집합은 다음과 같이 4개가 있습니다. { 1, 8 }, { 2, 7 }, { 3, 6 }, { 4, 5 } 그중 각 원소의 곱이 최대인 { 4, 5 } programmers.co.kr 주어진 n과 s에서, 자연수의 개수 n보다 s의 크기가 큰 경우는 불가..

[Python] 백준 16234. 인구 이동

https://www.acmicpc.net/problem/16234 16234번: 인구 이동 N×N크기의 땅이 있고, 땅은 1×1개의 칸으로 나누어져 있다. 각각의 땅에는 나라가 하나씩 존재하며, r행 c열에 있는 나라에는 A[r][c]명이 살고 있다. 인접한 나라 사이에는 국경선이 존재한다. 모든 나라는 1×1 크기이기 때문에, 모든 국경선은 정사각형 형태이다. 오늘부터 인구 이동이 시작되는 날이다. 인구 이동은 다음과 같이 진행되고, 더 이상 아래 방법에 의해 인구 이동이 없을 때까지 지속된다. 국경선을 공유하는 두 나라의 인구 차이가 L명 www.acmicpc.net 삼성SW역량테스트 기출문제. 조건대로 코드를 만들었는데, Python으로는 78%에서 시간초과가 뜨고 PyPy3으로 실행하면 통과한다..

[Python] 프로그래머스. 숫자 블록 (Level 4)

https://programmers.co.kr/learn/courses/30/lessons/12923 코딩테스트 연습 - 숫자 블록 | 프로그래머스 1 10 [0, 1, 1, 2, 1, 3, 1, 4, 3, 5] programmers.co.kr 문제 조건이 어려운 건 아니지만, begin과 end의 숫자범위가 말해주듯 효율성이 관건인 문제. 문제 조건에 따르면, 특정 시점의 번호를 채울 수 있는 값의 우선순위는 해당 번호 % 2 == 0 인 경우 > 해당 번호 % 3 == 0인 경우 > 해당 번호 % 4 == 0 인 경우... 이다. 여기까지만 이해해도 정확성은 100% 달성이 가능하다. 효율성을 확인하는 핵심은 '해당 숫자가 소수인지 아닌지' 확인하는 것. 해당 숫자가 소수라면, 1과 자기 자신 이외에..

[Python] 프로그래머스. 순위 (Level 3)

https://programmers.co.kr/learn/courses/30/lessons/49191 코딩테스트 연습 - 순위 | 프로그래머스 5 [[4, 3], [4, 2], [3, 2], [1, 2], [2, 5]] 2 programmers.co.kr 처음에는 그래프로 분류되어 있길래 위상정렬 문제인가 싶어서 한참 고민한 문제. 이 문제의 핵심은 '선수 A'가 있을 때, A를 이긴 사람과 A에게 진 사람의 수를 합치면 n-1이 되도록 만드는 것. 그리고 "A에게 진 사람은 A를 이긴 사람에게 반드시 진다' 와 'A를 이긴 사람은 A에게 진 사람을 반드시 이긴다'는 조건. 위 문제의 예시라면, 2번 선수가 5번 선수를 이겼고 1,3,4번 선수에게 졌다는 것은 '2번 선수에게 진' 5번 선수는 '2번 선..

[Python] 백준 13458. 시험 감독

https://www.acmicpc.net/problem/13458 13458번: 시험 감독 첫째 줄에 시험장의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 각 시험장에 있는 응시자의 수 Ai (1 ≤ Ai ≤ 1,000,000)가 주어진다. 셋째 줄에는 B와 C가 주어진다. (1 ≤ B, C ≤ 1,000,000) www.acmicpc.net 삼성A형 기출문제는 지금까지 거의 다 Brute Force + DFS / BFS 형태였는데, 별다른 고민없이 그냥 풀었던 문제. 모든 시험방에는 최소 한 명의 총감독관이 필요하고, (각 방에 남은 응시자 수 / 부감독관 1인당 처리할 수 있는 사람 수) 값을 소수점 이하 올림하면 각 방에 들어갈 수 있는 부감독관의 최소 숫자가 나온다.

[Python] 프로그래머스. 디스크 컨트롤러 (Level 3)

https://programmers.co.kr/learn/courses/30/lessons/42627 코딩테스트 연습 - 디스크 컨트롤러 | 프로그래머스 하드디스크는 한 번에 하나의 작업만 수행할 수 있습니다. 디스크 컨트롤러를 구현하는 방법은 여러 가지가 있습니다. 가장 일반적인 방법은 요청이 들어온 순서대로 처리하는 것입니다. 예를들어 - 0ms 시점에 3ms가 소요되는 A작업 요청 - 1ms 시점에 9ms가 소요되는 B작업 요청 - 2ms 시점에 6ms가 소요되는 C작업 요청 와 같은 요청이 들어왔습니다. 이를 그림으로 표현하면 아래와 같습니다. 한 번에 하나의 요청만을 수행할 수 있기 때문에 각각의 programmers.co.kr heapq 라이브러리를 사용하고, 프로세스가 queue에 들어올 수..

[Python] 백준 10775. 공항

https://www.acmicpc.net/problem/10775 10775번: 공항 문제 오늘은 신승원의 생일이다. 박승원은 생일을 맞아 신승원에게 인천국제공항을 선물로 줬다. 공항에는 G개의 게이트가 있으며 각각은 1에서 G까지의 번호를 가지고 있다. 공항에는 P개의 비행기가 순서대로 도착할 예정이며, 당신은 i번째 비행기를 1번부터 gi (1 ≤ gi ≤ G) 번째 게이트중 하나에 영구적으로 도킹하려 한다. 비행기가 도킹된 게이트에는 다른 비행기가 도착할 수 없다. 이렇게 공항을 운영할 경우 간혹 비행기가 어떤 곳에도 도킹하지 못하는 www.acmicpc.net Union Find 문제. 문제를 Union find 형태로 풀어내는 방법은 https://mygumi.tistory.com/245 백준..

Django + nginx + Gunicorn으로 AWS EC2에 Deploy하기 (Anaconda)

2019.10 ~ 글로벌경영학과 김영한 교수님 Research Assistant 작업 내용. 환경 AWS EC2 : Ubuntu 16.04 Anaconda : Anaconda3 - Python Version: 3.5 nginx : 1.1.0 (ubuntu) Gunicorn : 19.9.0 Django : 2.2.1 전제사항 1. django 웹페이지는 manage.py runserver 작업 시 로컬과 EC2 환경에서 정상적으로 작동한다. 2. Elastic IP는 AWS에서 이미 발급받았고, EC2와 연동되어 있다. 3. Anaconda3이 ubuntu에 이미 설치되어 있다. 4. 도메인은 이미 구입해둔 상태이며, AWS Route 53에 등록되어 있다. 5. manage.py collectstatic..