인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

mayong0707님의 프로필 이미지

작성한 질문수

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

2-S

답변 2

1

큰돌님의 프로필 이미지
큰돌
지식공유자

안녕하세요 마영님 ㅎㅎ

코드 각각 주석 달았습니다. 참고해보시겠어요?

#include <bits/stdc++.h>
using namespace std;

bool visited[10000];
vector<int> v[100000];
vector<pair<int, int>> vRet;
int n, m, a, b, cnt;

// vertex 매개변수는 불필요합니다.
void DFS(vector<int> vertex, int visitedIndex)
{
	visited[visitedIndex] = true;
	++cnt;
	for (int i = 0; i < vertex.size(); ++i)
	{
		if(!visited[vertex[i]])
		{
			DFS(v[vertex[i]], vertex[i]);
		}
	}
}

int main()
{
	cin >> n >> m;
	if (m == 0)
	{
		for (int i = 1; i <= n; ++i)
		{
			std::cout << i << " ";
		}
        //이거 하고 return 0을 해야 합니다.
	}

	for (int i = 0; i < m; ++i)
	{
		// a가 b를 신뢰한다.
		cin >> a >> b;
		v[b].push_back(a);
	}

	for (int i = 0; i < n; ++i)
	{
		cnt = 0;
		memset(visited, 0, sizeof(visited));
        // 방문하지 않았다면 해당 부분 다시 방문해야 합니다. v[i].size가 있더라도 
        // 예를들어  a <-> b 양방향 간선이 있다 했을 때 a에서 b -> .. 이렇게 탐색해서 b 사이즈가 있더라도 b -> a 
        // 로가는 부분 탐색 필요
		if (v[i].size() && visited[i] == 0) 
		{
			DFS(v[i], i);
			vRet.push_back({ i, cnt });
		}
	}

	sort(vRet.begin(), vRet.end(), [](pair<int, int>& left, pair<int, int>& right) -> bool 
		{
			if (left.second == right.second)
			{
				return left.first < right.first;
			}
			return left.second > right.second;
		});

// 어차피 sort 하면 [0]부분만 돌리면 될 것 같습니다.
	for (int i = 0; i < vRet.size(); ++i)
	{
		if (vRet[0].second == vRet[i].second)
		{
			std::cout << vRet[i].first << " ";
		}
	}

	return 0;
}

 

 

감사합니다.

0

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴입니다. mayong0707님.

“맞왜틀” 상황은 코딩 테스트에서 자주 발생하는 문제 중 하나입니다. 작성하신 코드를 기반으로 한 문제의 원인과 해결책을 찾기 위해 유사한 사례를 참고할 수 있는 몇 가지 게시물을 추천드립니다.

  1. 2-S, 런타임 에러가 발생하는 경우 해결 방법

    • 이 질문에서는 런타임 에러의 원인 중 하나로 배열의 범위를 더 넓게 설정하지 않아 발생할 수 있는 문제와 그 해결 방법을 설명하고 있습니다.
  2. 맞왜틀 문제의 일반적인 디버깅 방법

    • 여기에서는 특정 상황에서의 반례를 고려하여 문제를 해결하는 방법을 다루고 있습니다. 코드가 모든 가능한 입력값에서 올바르게 동작하는지 확인하는 것이 중요합니다.

각 링크들에서는 유사한 문제에 대한 다양한 해결 방법과 참고할 만한 조건들을 소개하고 있습니다. 특히 런타임 에러와 맞왜틀 상황은 함수 호출 시의 잘못된 조건 처리나 배열의 부적절한 크기 설정에서 주로 발생하므로, 이러한 요소들을 다시 한번 점검해 보는 것도 도움이 될 수 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.