[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
      • Java
      • Algorithm
        • Memo
        • Baekjoon
        • Programmers
        • HackerRank, LeetCode
      • Data Structure
      • Design Pattern
      • Etc
        • Memo
        • Daily Log
        • Book
  • 최근 글

  • 최근 댓글

  • 태그

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

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.