백준 26005번 (나뭇잎 학회, C++) [BAEKJOON]

나뭇잎 학회

https://www.acmicpc.net/problem/26005

문제

기선이는 퀴즈를 좋아해서 알고리즘 학회에 들어가고자 하이아크에 방문하였다.

하지만 학회 문 앞에는 단 한 개의 전구, 여러 개의 스위치와 함께 다음과 같은 쪽지가 붙어있었다.

보이는 것과 같이 하나의 전구와 N x N 개의 스위치가 N x N 배열로 있습니다.

이 스위치 중 단 하나만 전구와 연결되어 있으며, 연결된 스위치를 누르면 전구가 깜빡입니다.

스위치에는 특수 장치가 적용되어 있어서 상하좌우로 인접한 두 개의 스위치를 동시에 눌러야만 합니다.

예를 들어 N=3일 때, 당신이 5번 스위치를 누르고 싶다면 인접한 스위치 상(2), 하(8), 좌(4), 우(6) 중 하나의 스위치와 같이 한 번에 눌러야 합니다.

– 당신은 전구와 연결된 스위치가 어느 것인지 알아내서 답을 제출해야 합니다.

‘너무 쉽잖아’ 생각하고 스위치를 누르려는 순간, 밑에 작게 쓰여있는 글씨를 보고 경악하고 말았다.

– 단, 두 개의 스위치를 한 번에 누를 때마다 나뭇잎 하나를 문틈으로 제출해야 합니다.

귀찮음이 많은 기선이는 밖에서 최소한의 나뭇잎만 주워오려고 한다.

어떤 경우에도 정답을 맞히는 데 필요한 나뭇잎의 최소 개수를 여러분이 대신 구해보자.

입력

 N 이 주어진다. (1 ≤ N ≤ 1000)

출력

어떤 경우에도 정답을 맞히는 데 필요한 나뭇잎의 최소 개수를 출력한다.

예제 입력 1

1

예제 출력 1

0

스위치가 하나라면 눌러보지 않아도 전구가 해당 스위치와 연결되어 있다는 사실을 알 수 있다. 

예제 입력 2

2

예제 출력 2

2

예제 입력 3

3

예제 출력 3

5

예제 입력 4

4

예제 출력 4

8

힌트

출처

University > 홍익대학교 > 2022 홍익대학교 HI-ARC 프로그래밍 경진대회 B번

알고리즘 분류


풀이법????

이렇게 해결하는 문제가 맞나??? 아리송하다

통과된 코드

#include <iostream>

using namespace std;

/* // 처음 생각한 로직
int main()
{
	int N;

	cin >> N;

	if (N == 1) { cout << 0; }
	else if (N == 2) { cout << 2; }
	else {
		if (N % 2 == 0) cout << (((N * N) - 4) / 2) + 2;
		else cout << ((((N * N) - 4) + 1) / 2) + 2;
	}

	return 0;
}
*/

int main()
{
	int N;

	cin >> N;

	if (N == 1) { cout << 0; }
	else {
		if (N % 2 == 0) cout << (N * N)/2;
		else cout << (N * N) / 2 + 1;
	}

	return 0;
}

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

위로 스크롤