Skip to main content
  1. Posts/
  2. Algorithm/

BOJ 34830 호현이와 파이썬

·151 words·1 min
Jiho Kim
Author
Jiho Kim
달려 또 달려

📝 문제 정보
#

🧐 관찰 및 접근
#

  • 문제 상황을 차근차근 살펴보자
    • $a, b$가 있을 때, $a - b$ 를 한번 지나가면 된다.
    • $a, b, c$가 있을 때, $a - b, b- c, c-a$를 한번씩 지나가야한다.
    • $a, b,c ,d$가 있을 때, $a-b, a-c, a-d, b-c, b-d, c-d$를 한번씩 지나가야 한다.
    • 이를 그래프 이론으로 해석할 수 있지 않을까?
  • 그래프가 있고, 각 간선을 한번씩 지나되, 시점과 종점이 달라도 된다
    • 한붓그리기가 가능한가?
    • 이제 이 문제는 오일러 경로를 가능하게 하는 문제로 바뀐다.
    • 오일러 경로는, 홀수점이 두개 이하일때 가능하다.
  • 정점이 $N$개 있다고 하면, 그래프는 완전그래프이므로 각 정점에 붙어있는 간선은 $N-1$개이다.
    • $N$이 홀수라면, 모든 $N$개의 정점은 짝수점이다.
    • $N$이 짝수라면, 모든 $N$개의 정점은 홀수점이다.
      • 따라서, $N-2$개의 점들을 연결해서 홀수점이 2개가 되도록 만드는것이 최적이다.

💻 풀이
#

  • 코드 (C++):
void solve(){
    ll N; cin >> N;
    ll ans = N * (N-1) / 2;
    if(N%2 == 0) ans += N/2 - 1;
    cout << ans;
}