[C++] 백준 13023 ABCDE

2024. 2. 8. 19:57·Algorithm/Baekjoon
#include <iostream>
#include <vector>

using namespace std;

bool visited[2000]{ false };
bool result = false;

void dfs(int currNode, int count, const vector<vector<int>>& friends)
{
	if (count == 4)
	{
		result = true;
		return;
	}

	for (int i = 0; i < friends[currNode].size(); ++i)
	{
		int nextNode = friends[currNode][i];

		if (visited[nextNode])
		{
			continue;
		}

		visited[nextNode] = true;

		dfs(nextNode, count + 1, friends);

		visited[nextNode] = false;
	}
}

int main()
{
	int n, m;
	cin >> n >> m;

	vector<vector<int>> friends(n);

	for (int i = 0; i < m; ++i)
	{
		int a, b;
		cin >> a >> b;

		friends[a].push_back(b);
		friends[b].push_back(a);
	}

	for (int i = 0; i < m; ++i)
	{
		visited[i] = true;

		for (int j = 0; j < friends[i].size(); ++j)
		{
			int nextNode = friends[i][j];

			visited[nextNode] = true;

			dfs(nextNode, 1, friends);

			visited[nextNode] = false;
		}

		if (result)
		{
			break;
		}

		visited[i] = false;
	}

	cout << result;

	return 0;
}

 

문제 풀이

1. 친구 입력을 어떻게 넣을 것 인가에 먼저 초점을 잡았고 처음에는 pair로 하나씩 넣을까하다가 원하는 시작점에 바로 접근하기에 어렵다고 판단해서 vector로 넣었다.

2. 친구의 관계가 유형4를 보면 양방향으로 들어갈 수 있으므로 양방향으로 입력

3. 특정 시작점이 없으므로 시작점이 있고 다음 도착점이 있는 곳을 dfs하였다.

4. dfs안에서도 동일 방법으로 찾게 하고 친구관계가 A,B,C,D,E가 각자 다른 친구 관계를 가지면서도 이어진 친구관계이면 된다로 판단하고 4개의 관계가 있으면 친구관계가 형성됐다고 판단하게 한다.

 

느낀점

1. 입력 실수와 dfs와 bfs중 뭐가 더 좋을지에 대한 빠른 판단력을 더 키워야할 것 같다.

2. 문제 해독하는 시간을 중요한 점을 빠르게 캐치하는 연습을 해야될 듯하다.

 

 

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

 

13023번: ABCDE

문제의 조건에 맞는 A, B, C, D, E가 존재하면 1을 없으면 0을 출력한다.

www.acmicpc.net

 

저작자표시 (새창열림)

'Algorithm > Baekjoon' 카테고리의 다른 글

[C++] 백준 14889 스타트와 링크  (0) 2024.05.02
[C++] 백준 2579 계단 오르기  (0) 2024.04.30
[C++] 백준 1197 최소 스패닝 트리 / 최소신장트리  (0) 2021.10.18
[C++] 백준 1932 정수 삼각형  (0) 2021.09.28
[C++] 백준 2447 별 찍기  (0) 2021.09.27
'Algorithm/Baekjoon' 카테고리의 다른 글
  • [C++] 백준 14889 스타트와 링크
  • [C++] 백준 2579 계단 오르기
  • [C++] 백준 1197 최소 스패닝 트리 / 최소신장트리
  • [C++] 백준 1932 정수 삼각형
chanheess
chanheess
'왜' 그렇게 했는가?에 대한 생각으로 공부 및 작업의 저장관리
  • chanheess
    왜 그렇게 생각했는가?
    chanheess
  • 전체
    오늘
    어제
    • 분류 전체보기
      • Backend Programming
      • Game Programming
        • Unreal
        • DirectX
      • C++
        • Memo
        • Basic
        • Effective Modern
      • Algorithm
        • Memo
        • Baekjoon
        • Programmers
        • HackerRank, LeetCode
      • Data Structure
      • Design Pattern
      • Etc
        • Memo
        • Daily Log
        • Book
  • 최근 글

  • 최근 댓글

  • 태그

    JPA
    SpringSecurity
    c++ 기초 플러스
    프로그래머스
    dp
    오블완
    티스토리챌린지
    JWT
    Java
    dfs
    알고리즘
    위클리 챌린지
    백준
    spring
  • hELLO· Designed By정상우.v4.10.0
chanheess
[C++] 백준 13023 ABCDE
상단으로

티스토리툴바