Deep Learning through deep learning

백준 1453 피시방 알바 본문

Baekjoon_algorithm_heuristic

백준 1453 피시방 알바

NeuroN 2023. 2. 17. 10:26

https://www.acmicpc.net/

 

Baekjoon Online Judge

Baekjoon Online Judge 프로그래밍 문제를 풀고 온라인으로 채점받을 수 있는 곳입니다.

www.acmicpc.net

[문제 해석]

더보기

손님의 수가 주어지고 그 수에 따라 각자 앉고 싶어하는 자리 번호가 각각 주어진다.
이때 중복되는 번호가 있다면 몇번의 중복이 있었는지를 출력하는 문제이다.

입력변수 N을 먼저 입력받는다.
그 후 N_state라는 자리 벡터를 만들었다. for문을 통해 입력받은 자리 번호를 N_state배열에 할당했다.
2중 for문을 이용해 N_state를 탐색하면 되는데, 두번째 for문에 i+1부터 시작하는 이유는 N_state[i] == N_state[j] 이 조건에는 i==j인 경우가 발생하면 안되기 때문이다.
중복이 생기면 N_state[j]에 101이라는 값을 할당하는데, 자리의 범위가 100이하이기 때문에 중복이 생겼다는 표시를 하기 위해 범위를 넘어선 값을 할당했다.
또한, 중복이 생길때마다 count=0변수를 만들어 +1씩 높여나간다.
주의해야 할점은 중복이 생길때 할당했던 101숫자들도 중복으로 판단하기때문에 101이 아닐때의 조건을 넣어야한다.

[정답 코드]

#include <iostream>
#include <math.h>
#include <algorithm>
#include <vector>
#include <string>
using namespace std;

int main()
{
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);

	int N; cin >> N;
	vector<int> N_state;
	int NS_input;
	int count = 0;

	for (int i = 0; i < N; i++)
	{
		cin >> NS_input;
		N_state.push_back(NS_input);
	}

	for (int i = 0; i < N; i++)
	{
		for (int j = i+1; j < N; j++)
		{
			if (N_state[i] != 101 & N_state[i] == N_state[j])
			{
				N_state[j] = 101;
				count++;
			}
		}
	}

	cout << count;

}

'Baekjoon_algorithm_heuristic' 카테고리의 다른 글

백준 10813 공 바꾸기  (0) 2023.02.17
백준 1568 새  (0) 2023.02.17
백준 2441 별 찍기 - 4  (0) 2023.02.17
백준 7567번 그릇  (0) 2023.02.08
백준 10988번 팰린드롬인지 확인하기  (0) 2023.02.08