Thief of Wealth
2887 행성 터널
개발/알고리즘 2020. 10. 5. 21:44

문제 때는 2040년, 이민혁은 우주에 자신만의 왕국을 만들었다. 왕국은 N개의 행성으로 이루어져 있다. 민혁이는 이 행성을 효율적으로 지배하기 위해서 행성을 연결하는 터널을 만들려고 한다. 행성은 3차원 좌표위의 한 점으로 생각하면 된다. 두 행성 A(xA, yA, zA)와 B(xB, yB, zB)를 터널로 연결할 때 드는 비용은 min(|xA-xB|, |yA-yB|, |zA-zB|)이다. 민혁이는 터널을 총 N-1개 건설해서 모든 행성이 서로 연결되게 하려고 한다. 이때, 모든 행성을 터널로 연결하는데 필요한 최소 비용을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 행성의 개수 N이 주어진다. (1 ≤ N ≤ 100,000) 다음 N개 줄에는 각 행성의 x, y, z좌표가 주어진다. 좌표는 -109..

1647 도시 분할 계획
개발/알고리즘 2020. 10. 5. 20:20

문제 동물원에서 막 탈출한 원숭이 한 마리가 세상구경을 하고 있다. 그러다가 평화로운 마을에 가게 되었는데, 그곳에서는 알 수 없는 일이 벌어지고 있었다. 마을은 N개의 집과 그 집들을 연결하는 M개의 길로 이루어져 있다. 길은 어느 방향으로든지 다닐 수 있는 편리한 길이다. 그리고 각 길마다 길을 유지하는데 드는 유지비가 있다. 마을의 이장은 마을을 두 개의 분리된 마을로 분할할 계획을 가지고 있다. 마을이 너무 커서 혼자서는 관리할 수 없기 때문이다. 마을을 분할할 때는 각 분리된 마을 안에 집들이 서로 연결되도록 분할해야 한다. 각 분리된 마을 안에 있는 임의의 두 집 사이에 경로가 항상 존재해야 한다는 뜻이다. 마을에는 집이 하나 이상 있어야 한다. 그렇게 마을의 이장은 계획을 세우다가 마을 안에..

1197 최소 스패닝 트리
개발/알고리즘 2020. 10. 5. 19:51

문제 그래프가 주어졌을 때, 그 그래프의 최소 스패닝 트리를 구하는 프로그램을 작성하시오. 최소 스패닝 트리는, 주어진 그래프의 모든 정점들을 연결하는 부분 그래프 중에서 그 가중치의 합이 최소인 트리를 말한다. 입력 첫째 줄에 정점의 개수 V(1 ≤ V ≤ 10,000)와 간선의 개수 E(1 ≤ E ≤ 100,000)가 주어진다. 다음 E개의 줄에는 각 간선에 대한 정보를 나타내는 세 정수 A, B, C가 주어진다. 이는 A번 정점과 B번 정점이 가중치 C인 간선으로 연결되어 있다는 의미이다. C는 음수일 수도 있으며, 절댓값이 1,000,000을 넘지 않는다. 그래프의 정점은 1번부터 V번까지 번호가 매겨져 있고, 임의의 두 정점 사이에 경로가 있다. 최소 스패닝 트리의 가중치가 -2,147,483,..

11057 오르막 수
개발/알고리즘 2020. 10. 5. 01:48

문제 오르막 수는 수의 자리가 오름차순을 이루는 수를 말한다. 이때, 인접한 수가 같아도 오름차순으로 친다. 예를 들어, 2234와 3678, 11119는 오르막 수이지만, 2232, 3676, 91111은 오르막 수가 아니다. 수의 길이 N이 주어졌을 때, 오르막 수의 개수를 구하는 프로그램을 작성하시오. 수는 0으로 시작할 수 있다. 입력 첫째 줄에 N (1 ≤ N ≤ 1,000)이 주어진다. 출력 첫째 줄에 길이가 N인 오르막 수의 개수를 10,007로 나눈 나머지를 출력한다. DP문제인 것을 알고 풀었으므로 바틈-업 방식으로 사고를 해보았다. 수많은 점화식을 짜본결과 dp[i][j]를 i길이의 숫자에서 맨왼쪽숫자가 j일때 오르막개수 로 정의하여 점화식을 세우고 연산을 진행했더니 답을 찾을 수 있었..

article thumbnail
Konlpy TypeError: startJVM() got an unexpected keyword argument 'convertStrings'
개발/Mac 2020. 10. 4. 20:19

* MAC 기준 Konlpy를 쓰려고 하는데 TypeError: startJVM() got an unexpected keyword argument 'convertStrings' 에러가 뜬다. https://nogadaworks.tistory.com/193 블로그에서 일련의 과정을 따라서 내려오면서 모두 설치를 완료하고 간단한 테스트인 from konlpy.utils import pprint from konlpy.tag import Okt okt = Okt() 를 해보려는데, 위와 같은 에러가 뜨고, 에러내용을 구글링해봐도 영양가가 있는 내용은 보이지 않는다. 이 경우에 https://i-am-eden.tistory.com/9님의 블로그를 보고 해결했다. 위 에러의 내용에는 jvm.py에서 에러가 난 것이..

[Selenium] shadow DOM 크롤링 하는법
개발/RPA 2020. 10. 4. 14:47

html 코드를 보다보면 #document 또는 #shadow-root 형식 밑에 또 html 코드가 있는 경우가 있다. 이런 경우에는 selenium으로 바로 크롤링하려 할때 element를 못찾게 되는데, 이때는 javascript로 shadow DOM객체를 찾아서 반환한다음 selenium에서 반환하여야 한다. 예를 들어서 chrome://settings 에 들어가면 크롬의 설정을 변경할 수 있는데, 상단 검색창에 입력을 하고 싶다고 가정해보자, html소스상에서는 #searchInput을 찾으면 되지만 shadow DOM에 숨겨져 있어서 바로 찾을 수 없는 element라고 뜰것이다. 심지어 3중 shadow dom으로 되어 있는데, 이러한 경우에는 html코드의 shadow DOM 상단의 태그들..

article thumbnail
10162 전자레인지
개발/알고리즘 2020. 10. 4. 01:01

3개의 시간조절용 버튼 A B C가 달린 전자레인지가 있다. 각 버튼마다 일정한 시간이 지정되어 있어 해당 버튼을 한번 누를 때마다 그 시간이 동작시간에 더해진다. 버튼 A, B, C에 지정된 시간은 각각 5분, 1분, 10초이다. 냉동음식마다 전자레인지로 요리해야할 시간 T가 초단위로 표시되어 있다. 우리는 A, B, C 3개의 버튼을 적절히 눌러서 그 시간의 합이 정확히 T초가 되도록 해야 한다. 단 버튼 A, B, C를 누른 횟수의 합은 항상 최소가 되어야 한다. 이것을 최소버튼 조작이라고 한다. 만일 요리시간이 100초라고 하면(T=100) B를 1번, C는 4번 누르면 된다. 이와 다르게 C를 10번 눌러도 100초가 되지만 이 경우 10번은 최소 횟수가 아니기 때문이 답이 될 수 없다. 이 경..

1946 신입사원
개발/알고리즘 2020. 10. 4. 00:30

문제 언제나 최고만을 지향하는 굴지의 대기업 진영 주식회사가 신규 사원 채용을 실시한다. 인재 선발 시험은 1차 서류심사와 2차 면접시험으로 이루어진다. 최고만을 지향한다는 기업의 이념에 따라 그들은 최고의 인재들만을 사원으로 선발하고 싶어 한다. 그래서 진영 주식회사는, 다른 모든 지원자와 비교했을 때 서류심사 성적과 면접시험 성적 중 적어도 하나가 다른 지원자보다 떨어지지 않는 자만 선발한다는 원칙을 세웠다. 즉, 어떤 지원자 A의 성적이 다른 어떤 지원자 B의 성적에 비해 서류 심사 결과와 면접 성적이 모두 떨어진다면 A는 결코 선발되지 않는다. 이러한 조건을 만족시키면서, 진영 주식회사가 이번 신규 사원 채용에서 선발할 수 있는 신입사원의 최대 인원수를 구하는 프로그램을 작성하시오. 입력 첫째 줄..

profile on loading

Loading...