DOJ logoDOJ
問題
最近追加された問題保存した問題Workbooks
カテゴリDLCコンテストグループチーム掲示板
ランキング
正解数ランキングストリークランキングDOJ Powerランキング
提出状況
問題募集ログイン新規登録
DOJ logoDOJ

OI形式のサブタスク採点、Eloレーティング、Discord認証を備えたオンラインジャッジです。

問題
問題一覧カテゴリ
コミュニティ
コンテストランキング掲示板お知らせ外部のコンテストを開催するガイド
アカウント
ログイン新規登録ジャッジ状態
ポリシー
利用規約DLCの利用規則プライバシーAPI 文書言語ランタイムコンテストの順位報酬レーティングとパフォーマンス
© 2026 DOJ
All rights reserved
解説

교차로 잇기

問題に戻る

解説

도로 하나는 서로 다른 두 교차로를 사용하므로, 만들 수 있는 도로의 개수는 항상 ⌊N2⌋\left\lfloor \frac{N}{2} \right\rfloor⌊2N​⌋개 이하이다.

이제 이 개수를 항상 만들 수 있음을 보이면 된다. 모든 교차로를 xxx좌표가 증가하는 순서로 정렬하고, 앞에서부터 두 개씩 묶어 (1,2),(3,4),…(1,2),(3,4),\ldots(1,2),(3,4),…에 해당하는 교차로 쌍을 연결하자. 서로 다른 두 도로가 사용하는 xxx좌표 구간은 서로 겹치지 않는다. 따라서 두 도로는 중간에서 교차하지 않는다. 또한 각 교차로는 최대 한 번만 사용된다.

그러므로 정답은 ⌊N2⌋\left\lfloor \frac{N}{2} \right\rfloor⌊2N​⌋이다. 실제 프로그램은 좌표를 모두 입력받은 뒤 ⌊N/2⌋\lfloor N/2 \rfloor⌊N/2⌋만 출력하면 된다.

시간 복잡도는 O(N)O(N)O(N)이고, 메모리 복잡도는 O(1)O(1)O(1)이다.

Solution written by GPT5.5