Today Sangmin Learned
[Python] BOJ(백준) 9237번 - 이장님 초대
CS/알고리즘 2021. 6. 27. 13:32

링크 https://www.acmicpc.net/problem/9237 난이도(solved.ac 참고) 실버5 풀이 좀 허무했다. 처음에 내가 너무 어렵게 생각했는데, 이게 실버5가 맞나..? 라는 생각이 들어서 일단 접어뒀다가 다시 풀고 금방 맞았다. 이 문제에서의 핵심은, 총 걸리는 시간은 배열 내 최대값 + 그 인덱스의 값이기 때문에, 큰 값을 가장 앞에 둬야 된다는 것이다. 큰 값이 뒤에 있다면, 이미 인덱스가 많이 증가한 상태이기 때문에 결국 최종 걸리는 시간은 더 길어지게 된다. t 배열에 각자 다 자라는데 며칠이 걸리는지에 대한 값을 넣었고, 그 값을 내림차순으로 정렬했다. 그렇게 되면, 다 자라는 데 오래 걸리는 묘목을 앞 순서에 배치시켜서 묘목이 자라는 데 걸리는 시간 외에, 그 묘목을 ..

article thumbnail
[Python] 최단 거리 구하기(BFS)
CS/알고리즘 2021. 6. 1. 10:16

문제 기술 n(1이상 1000이하 정수)개의 지하철 역(0부터 n-1까지 번호가 붙여져 있음)과 인접한 역의 쌍들이 주어져 있다. 두 지하철 역 a와 b에 대하여 a로부터 b로 가는 가장 짧은(지나는 에지 수가 가장 작은) 경로의 길이(지나는 에지의 수)를 구하는 프로그램을 작성하시오. 요구조건: 지하철 망을 인접리스트로 나타내고, 탐색방법은 너비우선탐색을 이용한다. 입력 첫 번째 줄에 지하철 역 수 n(1이상 1,000이하 정수)이 주어지고 두 번째 줄에 인접한 역들의 쌍의 수 m(0이상 30,000이하 정수)이 주어진다. 다음 m 개의 각 줄에 인접한 두 역 번호(0이상 n-1이하 정수가 빈칸을 사이에 두고 주어진다. 마지막 줄에 두 지하철 역 번호 a, b가 주어진다. n m // 지하철 역 수, ..

article thumbnail
[Python] 친구 관계(DFS)
CS/알고리즘 2021. 6. 1. 10:06

문제 기술 0부터 n-1까지 번호가 붙여진 n명의 사람들의 친구관계가 주어져 있다. 다음은 6명의 사람들에 대한 친구관계를 보여준다. 친구관계로 연결되어 있는 집단의 개수와 가장 큰 집단의 크기 (사람 수), 가장 작은 집단의 크기를 구하는 프로그램을 작성하시오. 위의 그림에서 집단은 2개이고 가장 큰 집단은 {1, 2, 3, 5, 6}으로서 크기는 5이고 가장 작은 집단은 {0, 4}로서 크기는 2이이다. 요구조건: 친구관계를 인접리스트로 표현하고, 탐색방법은 깊이우선탐색을 이용한다. 첫 번째 줄에 사람들의 수 n(1이상 1,000이하 정수)와 친구 관계 수 m(0 이상 300,000 이하 정수)가 주어진다. 다음 m개의 각 줄에 친구 관계를 나타내는 두 사람의 번호가 주어진다. 입력 7 6 1 2 1..

article thumbnail
[알고리즘] 동적 계획법 - Assembly Line Scheduling using Python
CS/알고리즘 2021. 5. 7. 15:43

위의 라인은 S1, 아래 라인이 S2이다. 각 라인은 1부터 n까지의 공정이 있고, 이는 Si, j로 나타낸다. Si, j의 소요 시간은 각각 ai, j이다. ei는 i번째 라인에 들어가는 데 소요되는 시간을 의미하고(ex. e1: line 1에 들어가는 데 소요되는 시간) xi는 i번째 라인에서 작업을 다 마치고 나오는 데 소요되는 시간을 의미한다. 마지막으로 ti, j는, j번째 공정까지 마친 뒤 i번째 라인에서 다른 라인으로 교체하는 데 소요되는 시간이다. f1[j]은, i번째 라인에서 진행하는 j 공정(Si, j)을 시작 지점으로 했을 때 가장 빠른 시간이다. 여기서 우리가 구해야 될 것은, f*, 즉 최종적으로 가장 빠른 시간을 저장하는 변수이다. 동적 계획법을 사용하여 접근하면 이 문제를 선형..

article thumbnail
1/5 오늘의 코로나 Slackbot 완성
Slackbot 2021. 1. 5. 19:17

어제와 그저께는 안만졌고, 3일 전에 마지막으로 만졌던 부분이 AWS EC2 서버에서 파이썬 가상환경을 켜는 것 까지였다. 3일 전 기준으로 남아있던 것은 1) Git에 토큰 없이 push를 했는데, 이걸 EC2 서버에서 토큰을 반영하는 방법 2) EC2 서버에 토큰 반영 후 python3 slackbot.py 제대로 작동하는 지 확인 3) EC2 서버에서 crontab을 이용해서 '노트북이 켜져 있지 않더라도 EC2 서버에서 slackbot.py를 매일 특정 시간대에 반복적으로 실행' 이 세가지였는데, 오늘 한 30분 걸려서 전부 다 해결했다. 1) Git에 토큰 없이 push를 했는데, 이걸 EC2 서버에서 토큰을 반영하는 방법 이 부분을 어떻게 해야 될 지 고민을 많이 했는데, 팀원의 조언에 따라 ..

article thumbnail
12/29 SlackBot 추가하기 & import slack이 안 되는 오류 해결
Slackbot 2020. 12. 29. 17:07

계절학기 강의를 듣고 난 후, 어제 글을 올렸던 대로 슬랙봇을 만들기 시작했다. 우선 https://api.slack.com/apps에서 '코로나 확진자 알려주는 봇'을 만들었고, Slack API: Applications | Slack Your Apps Don't see an app you're looking for? Sign in to another workspace. api.slack.com 토큰 생성 후 showmethatcode의 bots-playground 채널에 해당 봇을 추가했다. 봇을 작동하게 하는 방법은 구글링을 한 결과 1) import만 해오고 본인이 직접 코드를 다 짜기 2) 기본적으로 구동이 되게끔 만들어진 소스코드에서 필요한 부분만 내 입맛대로 수정하기(여기) 이렇게 크게 두 ..