※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※
이번에 볼 문제는 백준 26005번 문제인 나뭇잎 학회이다.
문제는 아래 링크를 확인하자.
https://www.acmicpc.net/problem/26005
26005번: 나뭇잎 학회
기선이는 퀴즈를 좋아해서 알고리즘 학회에 들어가고자 하이아크에 방문하였다. 하지만 학회 문 앞에는 단 한 개의 전구, 여러 개의 스위치와 함께 다음과 같은 쪽지가 붙어있었다. 보이는 것과
www.acmicpc.net
스위치가 3개 이상 있는 경우를 생각해보자. 이는 N=1을 제외한 모든 테스트케이스에 적용될 수 있다.
전구와 연결된 스위치의 위치를 찾기 위해 스위치를 두 개씩 눌러보면서 후보를 차근차근 줄여나가야 한다. 이 때, 누른 두개의 스위치로 전구에 불이 켜지지 않는다면 정답 후보 스위치는 둘이 감소하고, 불이 들어온다면 정답 후보 스위치는 정확히 둘이 됨을 관찰하자. 특히 후보 스위치가 정확히 세개 남았을 때, 아직 눌러본 적 없는 두 개의 스위치를 눌렀을 때 불이 들어오는 것이 후보의 수가 가장 적게 감소하는(-1) 경우가 됨에 유의하자.
후보 스위치가 둘이 되었다면 그중 하나의 스위치만이 눌리게끔 스위치를 누르면 어떤 스위치가 전구와 연결되었는지 판별할 수 있게 된다.
위의 과정을 이용해 문제를 해결하는 식을 세우자.
아래는 제출한 소스코드이다.
#include <iostream>
using namespace std;
int N;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> N;
if (N == 1) cout << 0;
else cout << (N * N - 1) / 2 + 1;
}
728x90
'BOJ' 카테고리의 다른 글
[BOJ 26770 // C++] Basen (0) | 2022.12.26 |
---|---|
[BOJ 13700 // C++] 완전 범죄 (0) | 2022.12.26 |
[BOJ 26007 // C++] Codepowers (0) | 2022.12.26 |
[BOJ 26863 // C++] Absolutely Flat (0) | 2022.12.26 |
[BOJ 26006 // C++] K-Queen (0) | 2022.12.26 |