분류 전체보기 185

AWS EC2에 프로젝트 배포하기_2탄

1탄에서 이어지는 내용입니다. (4) pm2 설정하기 pm2는 Node.js 프로세스 관리자이다. BackEnd 서버를 무중단 배포하기 위해 이 pm2 모듈을 사용할 것이다. 먼저 pm2를 Global로 설치한다. pm2를 사용하기 전에 npm start 를 통해 문제없이 서버가 시작되는지 확인한다. 나는 또 여기서 자꾸 아래와 같은 오류가 떴는데 nodejs의 버전 문제였다. (참고) 그래서 다음과 같이 버전을 업그레이드 해줬다. nodejs -v / node -v - 현재 버전 확인 sudo npm cache clean --force sudo npm install -g n sudo n stable - n 플러그인을 이용해 버전 업그레이드 nodejs -v / node -v - 업그레이드 된 버전 확인..

AWS EC2에 프로젝트 배포하기_1탄

[01 AWS EC2란? ] EC2는 간단하게 AWS에서 제공하는 클라우드 컴퓨팅 서비스다. 쉽게 말해, 아마존으로 부터 한 대의 컴퓨터를 임대하는 것이다. 프로젝트가 끝나고 나서는 엘리스가 제공하는 VM을 더이상 사용하지 못하기 때문에 배포 서버를 옮겨야 하는데, AWS와 Heroku를 고민했었다. 구글링으로 서치해 비교해본 결과 Heroku는 배포가 쉬운 대신 느리고, AWS에 비해 인스턴스 제어(로드 밸런싱, 방화벽 설정 등)가 제한적인 것 같았다. 그리고 어쨌든 AWS를 훨씬 더 많이 쓰니까, 이번 기회에 공부해서 배포해 보기로 했다. 결론적으로는 6시간만에 배포에 성공했고, 나중에 다른 프로젝트를 배포하게 될 때를 대비해서 시행착오를 겪은 과정과 해결 과정을 남기려고 한다. [02 EC2 사용 ..

[실버 III] 9461번. 파도반 수열

문제 https://www.acmicpc.net/problem/9461 9461번: 파도반 수열 오른쪽 그림과 같이 삼각형이 나선 모양으로 놓여져 있다. 첫 삼각형은 정삼각형으로 변의 길이는 1이다. 그 다음에는 다음과 같은 과정으로 정삼각형을 계속 추가한다. 나선에서 가장 긴 변의 www.acmicpc.net 사용 언어 Python3 풀이 과정 solved.ac의 클래스 3을 따내려고 난이도가 낮은 것부터 한 문제씩 푸는 중인데, 아직까지는 풀만 한 것 같다. 이번에는 DP와 수열이 합쳐진 문제였고 규칙성을 생각해보면 그대로 금방 풀 수 있었다. 삼각형이기 때문에 변의 개수 만큼 돌아가고, 그래서 i번째 숫자와 i+1번째 숫자를 더한 값이 i+3번째에 놓인다는 사실을 알았다. 그렇게 풀어서 제출했더니 ..

[실버 III] 11399번. ATM

문제 https://www.acmicpc.net/problem/11399 11399번: ATM 첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000) www.acmicpc.net 사용 언어 Python3 풀이 과정 실버 III이고 문제 설명이 좀 길어서 그래도 좀 난이도가 있겠거니 생각했는데 생각만 하면 코드는 정말 간단한 문제였다! 각자가 돈을 인출하는 데 걸리는 시간이 다르기 때문에 사람들이 줄을 서는 순서에 따라서, 기다리는 시간이 차이가 나게 되는데 각자가 기다린 시간을 합쳤을 때의 시간이 최소가 되게 하는 문제였다. 따라서 간단하게 돈을 인출하는 데 오래걸리는 사람이 앞에 있으면 모두가 ..

[골드 V] 1753번. 최단경로

문제 https://www.acmicpc.net/problem/1753 1753번: 최단경로 첫째 줄에 정점의 개수 V와 간선의 개수 E가 주어진다. (1 ≤ V ≤ 20,000, 1 ≤ E ≤ 300,000) 모든 정점에는 1부터 V까지 번호가 매겨져 있다고 가정한다. 둘째 줄에는 시작 정점의 번호 K(1 ≤ K ≤ V)가 www.acmicpc.net 사용 언어 Python3 풀이 과정 며칠 전에 공부한 다익스트라 알고리즘의 기본 문제를 풀어보았다. float('inf')를 print( )하면 inf로 잘 뜨길래 그대로 제출했는데 처음에 틀렸습니다가 떴길래 문제를 다시 읽으니 출력 형식이 inf가 아닌 INF였다. print(*distance[1:], sep='\n') 그래서 삼항 연산자로 바꿔서 출력..

[실버 IV] 1676번. 팩토리얼 0의 개수

문제 https://www.acmicpc.net/problem/1676 1676번: 팩토리얼 0의 개수 N!에서 뒤에서부터 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 프로그램을 작성하시오. www.acmicpc.net 사용 언어 Python3 풀이 과정 실버 IV 지만 그래도 아이디어가 한 번에 맞아서 기분 좋은!! 팩토리얼 연산을 했을 때 맨 뒤에 붙는 0의 개수를 구하는 문제였다. 0은 곧 10을 곱한 것을 의미하니 2*5의 세트 개수를 구하면 된다고 생각했고, 따라서 처음에는 2의 개수 5의 개수를 각각 구해서 min값을 저장하려 했다. 그런데 풀다 보니 5가 한 번 나올 동안 2는 무조건 한 번 이상 나온다는 것을 깨달았고, 따라서 새로 더할 숫자가 5로 나누어 떨어지는 개수만 구해서..

[실버 IV] 17219번. 비밀번호 찾기

문제 https://www.acmicpc.net/problem/17219 17219번: 비밀번호 찾기 첫째 줄에 저장된 사이트 주소의 수 N(1 ≤ N ≤ 100,000)과 비밀번호를 찾으려는 사이트 주소의 수 M(1 ≤ M ≤ 100,000)이 주어진다. 두번째 줄부터 N개의 줄에 걸쳐 각 줄에 사이트 주소와 비밀번 www.acmicpc.net 사용 언어 Python3 풀이 과정 solved.ac의 클래스 점수를 얻고 싶어서 관련 문제를 하나씩 풀어보려고 한다. 당연히(?) 쉬운 문제부터 푸는 중이라서 고른 문제인데 입출력 관련 문제였고 왜 실버지? 싶을 정도로 아주 쉬웠다. 처음 내가 짰던 코드는 다음과 같다. from sys import stdin input = stdin.readline sites..

[실버 I] 1446번. 지름길

문제 https://www.acmicpc.net/problem/1446 1446번: 지름길 첫째 줄에 지름길의 개수 N과 고속도로의 길이 D가 주어진다. N은 12 이하인 양의 정수이고, D는 10,000보다 작거나 같은 자연수이다. 다음 N개의 줄에 지름길의 시작 위치, 도착 위치, 지름길의 길이 www.acmicpc.net 사용 언어 Python3 풀이 과정 엘리스 강의로 다익스트라 알고리즘 개념과 우선순위 큐의 기본에 대해 공부하고 풀어보려고 했는데, 역시 바로 적용하는건 무리무리😌 심지어 적용한 코드를 보고도 잘 이해가 되지 않았다😅 나는 처음에 지름길로 언급된 위치만 정점으로 계산하려고 set을 사용해서 위치를 정의했는데, 그렇게 하면 이전 길들중 더 짧은 길을 파악하기가 어려워서 결국 0, 1..

[골드 III] 16236번. 아기 상어

문제 https://www.acmicpc.net/problem/16236 16236번: 아기 상어 N×N 크기의 공간에 물고기 M마리와 아기 상어 1마리가 있다. 공간은 1×1 크기의 정사각형 칸으로 나누어져 있다. 한 칸에는 물고기가 최대 1마리 존재한다. 아기 상어와 물고기는 모두 크기를 가 www.acmicpc.net 사용 언어 Python3 풀이 과정 조건이 진짜 많아서 풀기 까다로웠던 문제... 조건을 정리해보니 다음과 같았다. # 처음 아기상어 크기는 2 # 1초에 상하좌우로 한 칸씩 이동 # 자기보다 큰 물고기가 있는 칸은 지나갈 수 없음 # 자기보다 작은 크기의 물고기만 먹을 수 있음 # 자기랑 같은 크기면 지나갈수만 있음 # 자신의 크기와 같은 수의 물고기를 먹을 때마다 크기가 1 증가 ..

[실버 IV] 2491번. 수열

문제 https://www.acmicpc.net/problem/2491 2491번: 수열 0에서부터 9까지의 숫자로 이루어진 N개의 숫자가 나열된 수열이 있다. 그 수열 안에서 연속해서 커지거나(같은 것 포함), 혹은 연속해서 작아지는(같은 것 포함) 수열 중 가장 길이가 긴 것을 찾 www.acmicpc.net 사용 언어 Python3 풀이 과정 '구현 + 다이나믹 프로그래밍'을 주제로 스터디 팀원들이 골랐던 문제인데 DP라고 생각해서 더 어려웠던 것 같다. 처음에 내가 DP를 이용해 푼 코드는 다음과 같다. from sys import stdin input = stdin.readline N = int(input()) sequence = list(map(int, input().split())) maxl..

[실버 II] 2644번. 촌수계산

문제 https://www.acmicpc.net/problem/2644 2644번: 촌수계산 사람들은 1, 2, 3, …, n (1 ≤ n ≤ 100)의 연속된 번호로 각각 표시된다. 입력 파일의 첫째 줄에는 전체 사람의 수 n이 주어지고, 둘째 줄에는 촌수를 계산해야 하는 서로 다른 두 사람의 번호가 주어 www.acmicpc.net 사용 언어 Python3 풀이 과정 부모 자식간의 관계 그래프를 가지고 촌수를 계산하는 문제였다. 나는 처음에 부모: [자식 리스트]와 같은 일방향 그래프를 만들어놓고 자식들 숫자 두 개만 주어지면 어떻게 찾아가지 하는 고민을 했는데, 따라서 자식: [부모 리스트] 그래프도 만들어 양방향 그래프를 만들어주어야 문제를 풀 수 있었다. 그래프를 만들 때 처음에는 이중 리스트를..

[골드 I] 6523번. 요세푸스 한 번 더!

문제 https://www.acmicpc.net/problem/6523 6523번: 요세푸스 한 번 더! 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 세 숫자 N, a, b가 공백으로 구분되어져 있다. (2 ≤ N ≤ 109, 0 ≤ a, b < N) 또, 첫 사람이 술을 마시 www.acmicpc.net 사용 언어 Python3 풀이 과정 👏👏👏👏👏 일단 박수 👏👏👏👏👏 내가 골드 I 문제를 풀다니!! (사실 난이도 기여하신 분들이 많이 없어서 진짜 그 정도같진 않지만...) 그래도 기분이 좋자나~!~!! 사실 이 문제는 요세푸스 문제를 풀었을 때 바로 도전했던 문제인데.. 연산량이 적은 테스트케이스는 출력값이 잘 나왔지만 나머지 두 개는 계속 시간초..

[골드 V] 1106번. 호텔

문제 https://www.acmicpc.net/problem/1106 1106번: 호텔 첫째 줄에 C와 형택이가 홍보할 수 있는 도시의 개수 N이 주어진다. C는 1,000보다 작거나 같은 자연수이고, N은 20보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 각 도시에서 홍보할 때 www.acmicpc.net 사용 언어 Python3 풀이 과정 처음에는 어제 동전 1 푸는 법을 공부했다고 그래도 거의 비슷하게 아래와 같이 풀었다. # 원하는 만큼 고객을 늘리기 위한 투자 비용의 최솟값 from sys import stdin input = stdin.readline goal, cities = map(int, input().split()) dp = [0] * (goal + 1) costDict =..

Youtube search API 사용해서 검색 목록 이용하기

[01 Youtube API ] (1) 사용하게 된 배경 프로젝트를 진행하며 메인 페이지에 게임 관련 유튜브 동영상을 보여주고 싶었다. 따라서 "게임 리뷰"라는 키워드로 검색한 동영상 목록을 출력하려고 하는데, 당연히 블로그 검색부터 했다. 대부분의 블로그는 Channels, Playlists, Videos 메소드를 사용했는데 나는 검색 기능만 필요하기 때문에 Search 메소드를 사용할 것이다. 그런데 Search 메소드 사용한 블로그대로 다 해봤는데도 안돼고 감이 안잡혀서... 공식 문서를 확인했다. 사실 그래도 모르겠어서 보류하고 뉴스 크롤링 기능부터 구현했는데 여기서 request 라이브러리를 사용한 걸로 감이 와서 해결할 수 있었다! (2) Youtube API 요청시 주의할 점 Youtube ..

[골드 V] 2293번. 동전 1

문제 https://www.acmicpc.net/problem/2293 2293번: 동전 1 첫째 줄에 n, k가 주어진다. (1 ≤ n ≤ 100, 1 ≤ k ≤ 10,000) 다음 n개의 줄에는 각각의 동전의 가치가 주어진다. 동전의 가치는 100,000보다 작거나 같은 자연수이다. www.acmicpc.net 사용 언어 Python3 풀이 과정 NC에서 본 코딩 테스트 문제에 동전 문제가 생각나는 동적 계획법 문제가 있었어서 풀어봤다. 그런데 내가 기억한 문제랑은 다른 유형이었지만 암튼 이것도 점화식 세우기(문제 감 잡기) 너무 어려웠음... 문제의 포인트는 다음과 같았다. 1. 시간 제한이 0.5초, 메모리 제한도 4MB 2. 사용한 동전의 구성이 같으면 순서는 무시한다. 1번 조건 때문에 메모이..

[실버 I] 13910번. 개업

문제 https://www.acmicpc.net/problem/13910 13910번: 개업 해빈이는 짜장면을 정말 좋아한다. 짜장면을 너무 좋아한 나머지 짜장면만 파는 중국집을 개업했다! 해빈이는 양손잡이여서 동시에 두 개의 웍(중국 냄비)을 사용하여 요리할 수 있다. 그러나 www.acmicpc.net 사용 언어 Python3 풀이 과정 일단 푼 시간도 진짜 오래 걸렸는데 푸는 과정에서 문제를 잘못 봐서 두 번이나 함정에 빠졌다... 1. 해빈이는 양손잡이이기 때문에 한 번에 두 개의 웍만 사용할 수 있다. 2. 정확한 짜장면의 수만큼 요리할 수 있는 경우가 없을 경우 -1 출력 나는 1번을 안 보고 아래와 같이 모든 조합의 합을 구했고 당연히 이중 for문으로 시간이 오래 걸릴 수밖에 없었다. 내가..

[Level 1] 키패드 누르기

문제 https://programmers.co.kr/learn/courses/30/lessons/67256 코딩테스트 연습 - 키패드 누르기 [1, 3, 4, 5, 8, 2, 1, 4, 5, 9, 5] "right" "LRLLLRLLRRL" [7, 0, 8, 2, 8, 3, 1, 5, 7, 6, 2] "left" "LRLLRRLLLRR" [1, 2, 3, 4, 5, 6, 7, 8, 9, 0] "right" "LLRLLRLLRL" programmers.co.kr 사용 언어 Python3 풀이 과정 문제를 천천히 이해하며 풀었는데 로직은 다 맞는 것 같았는데 이상하게 띄엄 띄엄 6문제만 오답이었다. 차라리 틀릴거면 다 틀려야하는데 너어무 답답해서 테스트 케이스를 추가하고 내 머리의 정답과 비교했는데 운이 좋..