• Home
  • About
    • 코드좀비 photo

      코드좀비

      An amazing website.

    • Learn More
    • Github
  • Posts
    • All Posts
    • All Tags
  • Projects

[BOJ] 백준 5568 카드 놓기 간단한설명과 코드 C++

28 Mar 2020

Reading time ~1 minute

문제 정보

백준 ( BOJ ) boj 5568 카드 놓기

문제 풀이 : unordered_set, 수열

문제 출처 : https://www.acmicpc.net/problem/5568

시작 Thinking

  1. 가능한 모든 경우의 수 탐색 하기,

  2. 결과를 unoredered_set 에 넣기.

  3. unordered_set 사이즈를 출력

  4. 모든 수 탐색하기

이건 수열관련 가장 많은 문제죠.

dfs 하듯이 구현 하면 됩니다.

visited 를 체크 해 주면서, 모든 반복문이 돌아가도록~

  1. unordered_set 이 부분은, 괜히 자릿수 계산해서 숫자를 바꿔가며 넣기보다는,

그냥 간단하게 string 으로 만들어서 처리하는게 좋습니다!

코드

#include <iostream>
#include <unordered_set>
#include <vector>
#include <string>

using namespace std;

int n, k;
unordered_set<string> us;
vector<int> v;
vector<int> visited;
void fun(string sum, int counter) {
	if (counter != k ) {
		for (int i = 0; i < n; i++) {
			if (visited[i] == 0) {
				visited[i] = 1;
				fun(sum+ to_string(v[i]),counter+1);
				visited[i] = 0;
			}
		}
	}
	else
		us.insert(sum);
}

int main() {

	cin >> n >> k;
	v.assign(n, 0);
	visited.assign(n, 0);
	

	for (int i = 0; i < n; i++) {
		cin >> v[i];
	}
	fun("", 0);
	cout << us.size();
	return 0; 
}


백준C++unordered_set수열 Share Tweet +1