inhibitor.log development log

inhibitor.log

development log

전깃줄 I (wire)

문제

두 전봇대 사이에 하나 둘씩 전깃줄을 추가하다 보니 전깃줄이 서로 교차하는 경우가 발생했다. 합선의 위험이 있어 이 중 몇 개를 없애 전깃줄이 교차하지 않도록 만들려고 한다. (두 전깃줄이 전봇대의 동일한 위치에 연결되는 경우는 없다.) 전깃줄의 개수와 전깃줄이 두 전봇대에 연결되는 위치가 주어질 때, 남아있는 모든 전깃줄이 서로 교차하지 않게 하기 위해 없애야 하는 전깃줄의 최소 개수를 구하시오.

도커로 설정하는 서비스 개발/운영 환경

SPARCS에서 내가 진행하는 프로젝트(kono)의 개발 및 운영 환경을 만들어야 할 때가 왔다. 사실 프로젝트 시작할 때 이것부터 하고 시작해야 하지만… 어쩌다 보니 프로젝트가 절반가량 진행된 시점에서 하게 되었다. npm startnpm build밖에 모르던 사람이 이 과제를 해결하는 과정을 차근차근 알아보자.

옥상 정원 꾸미기 (rooftop)

문제

도로를 따라 일렬로 지어진 N개의 빌딩에는 모두 옥상 정원이 있다. 빌딩 관리인들은 매우 성실하기 때문에, 다른 빌딩의 옥상 정원을 보고 벤치마킹 하고 싶어한다.

빌딩의 구조 때문에 관리인들은 자신보다 오른쪽에 있는 빌딩 중 더 낮은 빌딩의 옥상만 볼 수 있다. 또, 당연하게도 높이가 자기 빌딩보다 높거나 같은 빌딩이 있으면 그 너머에 있는 빌딩들도 볼 수 없다.

드래프트 (draft)

문제

드래프트는 스포츠 팀들이 새로운 신인 선수들을 공평하게 영입하기 위해 시행하는 제도이다. 각 팀들은 차례를 정한 후, 돌아가면서 선수들을 지명한다. 하지만, 드래프트에서 많은 팀들이 원하는 선수가 있을 때는 팀들 간에 보이지 않는 수싸움이 이어지기도 한다.

올해의 드래프트는 다음과 같은 방법으로 진행된다고 한다.

  • N명의 선수들에게 1, 2, …, N 번호가 부여된다.
  • 팀들은 1번 선수부터 차례대로 선수들을 지명한다.
    • 먼저 지명하는 팀은 1명의 선수 (1번) 또는 2명의 선수(1, 2번)를 지명할 수 있다.
    • 이후에는 전 팀이 지명한 선수 수의 2배 이하만큼 선수를 지명할 수 있다.

올해 드래프트에는 당신과 당신의 라이벌 팀, 2개의 팀이 참여했다. 당신은 유능한 전력분석관이기 때문에, 드래프트에서 영입할 수 있는 선수들의 가치를 전부 알고 있다. 그러나, 상대 팀 또한 호락호락하지 않기 때문에 마찬가지로 선수들의 가치를 잘 알고 있으며, 드래프트에서 가치가 높은 선수들을 데려가기 위해 최선을 다할 것이다. 드래프트에서는 당신의 팀이 먼저 지명을 시작한다.

드래프트에서 어떻게 선수들을 지명해야 당신 팀에서 데려갈 수 있는 선수들의 가치를 최대화할 수 있는지 결정하는 프로그램을 작성하시오.

매번 구현하는 회원인증과 로그인

회원인증과 로그인

사이드 프로젝트로 개발하는 서비스 대부분에서 구현해야 하는데 매번 같은 것들을 찾아보면서 시간을 쓰는 것이 싫어서 여러 링크들과 관련 지식을 한 번에 정리해 보았다.