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

프로그래밍 211

[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..

[Python] 프로그래머스. 2020 카카오 recruit - 가사 검색 (Level 4)

https://programmers.co.kr/learn/courses/30/lessons/60060 코딩테스트 연습 - 가사 검색 | 프로그래머스 programmers.co.kr 트라이 자료구조를 안 쓰고 푸는 법 / 트라이 사용해서 푸는 법 두 가지 다 시도해 봤다. 트라이를 안 쓰는 경우는 python string의 startswith, endswith 방법을 사용해서 풀 수 있지만, 효율성에서 통과를 못 한다. 트라이를 사용할 경우 이 문제에서 가장 어려웠던 건 '문자열 개수'를 반영하는 것이었다. fro??일 경우 fro로 시작하면서 length가 5인, fro???는 length가 6인 걸 반환해야 하는데 fro까지 도착한 뒤, 아래 노드를 전부 순회하면 시간초과가 났다. 아마 노드를 순회하는..

[Python] 프로그래머스. 2018 카카오 recruit - 자동완성 (Level 4)

https://programmers.co.kr/learn/courses/30/lessons/17685 코딩테스트 연습 - [3차] 자동완성 | 프로그래머스 자동완성 포털 다음에서 검색어 자동완성 기능을 넣고 싶은 라이언은 한 번 입력된 문자열을 학습해서 다음 입력 때 활용하고 싶어 졌다. 예를 들어, go 가 한 번 입력되었다면, 다음 사용자는 g 만 입력해도 go를 추천해주므로 o를 입력할 필요가 없어진다! 단, 학습에 사용된 단어들 중 앞부분이 같은 경우에는 어쩔 수 없이 다른 문자가 나올 때까지 입력을 해야 한다. 효과가 얼마나 좋을지 알고 싶은 라이언은 학습된 단어들을 찾을 때 몇 글자를 입력해야 하 programmers.co.kr 트라이 자료구조의 활용을 의도한 문제. 트라이 자료구조의 의미와 ..