DOJ logoDOJ
Problems
Recently added problemsSaved problems
CategoriesDLCContestsGroupsTeamsBoard
Ranking
Solved Problem RankingStreak rankingDOJ Power ranking
Status
Call for TasksLoginRegister
DOJ logoDOJ

Community online judge with OI-style subtask scoring, Elo ratings, and Discord-backed certification.

Problems
ProblemsCategories
Community
ContestsRankingBoardNoticesHost an external contestGuide
Account
LoginRegisterJudge Status
Policy
Terms of ServiceDLC RulesPrivacyAPI documentationLanguage runtimesContest rank rewardsRating and performance
© 2026 DOJ
All rights reserved
Editorial

교차로 잇기

Back to problem

Editorial

도로 하나는 서로 다른 두 교차로를 사용하므로, 만들 수 있는 도로의 개수는 항상 ⌊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