• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    미해결

2-R 질문 있습니다.

23.01.31 19:32 작성 조회수 292

0

제가 수업을 듣다가 중간중간 출력을 찍어보면서 담기는 내용을 좀 파악하고 있는데요,,

코드에서 adj[54] 배열에 데이터가 담기는 과정을 출력해보고 싶은데 어떻게 코드를 작성해야 adj 배열을 출력해볼수 있는지 궁금합니다.

답변 3

·

답변을 작성해보세요.

1

안녕하세요 ㅎㅎ

이렇게 하면 됩니다.

#include<bits/stdc++.h>
using namespace std;
int n, r, temp, root;
vector<int> adj[54];
int dfs(int here){
    int ret = 0;
    int child = 0;
    for(int there : adj[here]){
        if(there == r) continue;
        ret += dfs(there);
        child++;
    }
    if(child == 0) return 1;
    return ret;
}
int main(){
    ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
    cin >> n;
    for(int i = 0; i < n; i++){
        cin >> temp;
        if(temp == -1)root = i;
        else adj[temp].push_back(i);
        cout << "입벌려 들어간다!!\n";
        for(int i : adj[temp]){
        	cout << i << '\n';
        }
    }
    cin >> r;
    if(r == root){
        cout << 0 << "\n";return 0;
    }
    cout << dfs(root) << "\n";
    return 0;
}

0

알타리님의 프로필

알타리

2023.01.31

코드 전체를 첨부 해주시면 더 도움이 될 것 같아요.

최경호님의 프로필

최경호

질문자

2023.02.01

넵! 전체코드는 아래와 같습니다! 수업내용 코드 그대로 공부중이라서요

https://www.acmicpc.net/source/share/ce4d012c085a44918188cb28f01032b0

 

알타리님의 프로필

알타리

2023.02.01

else {
     adj[temp].push_back(i);
     vector<int> result = adj[temp];
     cout << result[temp] << "\n";
}

이렇게 해 보시겠어요?

저도 공부하는 중이라 정확한 설명은 힘들지만 일단 이렇게 했을 때 출력이 되네요.

출력 해보는 것도 좋지만 IDE 디버깅 기능을 이용해서 보시면 공부하기 더 좋아요.

0

알타리님의 프로필

알타리

2023.01.31

adjvector 타입인거 같은데

else 구문 안에 이렇게 출력문을 넣으면 될 것 같습니다.

else {
    adj[temp].push_back(i);
    cout << adj[temp] << "\n";
}
최경호님의 프로필

최경호

질문자

2023.01.31

저 부분대로만 바꿨는데 에러가 뜹니다ㅠㅠ

채널톡 아이콘