inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

2-R

2-R 1068 질문 드립니다.(링크 수정하여 다시 올립니다)

292

정한수

작성한 질문수 3

1

선생님 죄송합니다. 링크 수정하여 다시 질문 드립니다.

저는 Input 값을 받을 때, 부모 자식에 대한 꼬리표를 같이 매겨서 부모 = 1 / 자식 = 2 / 루트 = -1 이런 식으로 풀었는데요. 75 % 쯤에서 Fail이 뜨네요 ㅠㅠ

어떤 문제가 있는 걸까요? 코드는 아래 링크에 있습니다

http://boj.kr/457d11f9ac914b61b98f62c5f2a89554

감사합니다

c++ 코테 준비 같이 해요! 코딩-테스트 C++

답변 1

0

큰돌

안녕하세요 한수님 ㅎㅎ

이 문제는 노드를 지우고 >> 리프노드를 세는 건데요.

일단은 이부분.

	for (int i = 0; i < n; i++) {
		//-1이 아니라. 1인. 주어지는 간선을 기반으로 리프노드 카운팅하는게
		// 더 나아보임. 2는 새로이 만든거니까 헷갈려요. 
		if ((arr[i].size() == 1) && (arr[i][0].first == 1)) cnt2++;
	}

-1이 아니라 1로 하는게 맞죠. 왜냐면 2가 포함되면. 2는 한수님이 로직을 위해 만든 역방향 간선이기 때문에 해당 부분은 포함되면 안되는 것 같습니다.

 

저는 근데 이 로직이 이해가 안가는데요.

이로직은 지워지는 정점으로 이어지는 정점의 사이즈가 1, 그리고 루트노드가 아니라면 cnt++을 합니다.

	//만약 지워지는 간선이 리프노드라면?? cnt++???  
	if (arr[del].size() == 1 && arr[del][0].first != -1) {
		cnt++;
		return;
	}

image저의 화가같은.. 그림입니다.하하.

그니까 한수님은 이런 로직이죠. del 타고타고 가서 저 초록색일 때 cnt++하는 거잖아요.


저걸 카운팅하고 >> 추후에 리프노드수를 세고 >> 그 수를 빼는게

어떻게 이게 지워진 정점의 리프노드의 수가 되는지 의아해서요.

	cout << cnt2 - cnt;

그니까 이경우.

이경우는 리프노드라. adj[del].size == 1에 안걸릴 거같아서요.

혹시 증명 가능한가요?

image

또 질문 있으시면 언제든지 질문 부탁드립니다.

좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :)

감사합니다.

강사 큰돌 올림.

0

정한수

선생님 안녕하세요.

pair <int,int> 를 사용하여 (카테고리, 노드번호) 를 아래와 같이 구현했습니다.

루트 : -1 / 부모 : 1 / 자식 : 2

(루트 / 부모 / 자식 , 노드번호)

Ex) 아래 그림에서 No. 0은 루트 노드이면서 (2,1),(2,2) 자식노드인 1 , 2 를 가지고 있다는 식으로 구현을 했는데요.

cnt2를 카운팅할 때, 리프 노드는 자식이 없고 부모 하나밖에 없다는 생각에 착안하여

size가 1인 녀석들이 리프노드라고 생각했습니다. cnt2 = 리프 노드의 총 갯수

image

del이 1이라고 가정을 한다면

1이 가지고 있는 (arr[del][i].first == 2) --> 자식 노드들의 값 3 / 4 를 인자값으로 넘겨주게 되면 해당 3 / 4 인 녀석들은 size가 1(리프노드) 이기 때문에 cnt++ 를 하고 리턴을 하게 됩니다. 결론 적으로 재귀함수를 다 돌게 되면 del = 1 과 연계 되는 모든 리프노드들이 계산이 되게 된다고 생각했습니다.

image

image

따라서, cnt2(리프노드 총 갯수) - cnt(del과 연계된 모든 리프노드) = 남은 리프노드

라고 생각하여 구현했는데 예외가 어떤게 있는지 잘 모르겠네요 ㅠㅠ

 

0

큰돌

아 이해했습니다.

다음과 같은 반례가 있습니다.

2

-1 0

정답 : 1

코드 : 아무것도 출력이 안됨.

9

-1 0 0 5 2 4 4 6 6

정답 : 2

코드 : 아무것도 출력이 안됨.

확인 부탁드려요.

또 질문 있으시면 언제든지 질문 부탁드립니다.

좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :)

감사합니다.

강사 큰돌 올림.

0

정한수

아! 이해 했습니다. 감사합니다~!

5-B

0

16

2

4 - A

0

33

2

코딩살구클럽 입장이 안됩니다

0

82

2

4-F 경우의 수 질문입니다.

0

35

2

코딩살구클럽 가입이 안됩니다.

0

85

2

살구 클럽에 대한 질문있습ㄴ디ㅏ

0

63

1

교안 158페이지 문의드립니다

0

47

2

코딩살구클럽 관련 건의사항

0

119

1

코살에 19942 다이어트 문제에 N의 범위가 빠져있슴니다

0

45

1

진행 방법 질문드립니다!

0

83

2

2-I) 왜 이 문제가 그래프이론 카테고리에 있는지 잘 모르겠습니다.

0

64

2

2주차 개념#12 트리 순회

0

33

2

백준사이트가 종료된다고 합니다.

0

318

2

백준 서비스 종료

9

953

1

sk 하이닉스 코테 대비

0

388

2

3-G 최댓값 질문

0

54

1

모듈러 연산 값이 10이 아닌 경우도 있지 않나요?

0

84

2

3-I 코드 질문드립니다.

0

66

2

3-N 질문 있습니다.

0

68

2

학습방법

0

105

2

4-H 질문 있습니다 (코드 리뷰)

0

69

2

코딩테스트 어디까지 준비해야 하는지 질문이 있습니다.

0

186

2

2-O 반례가 무엇일지 어떤 부분이 틀렸는지 잘 모르겠습니다.

0

74

2

2주차 개념 #4-2. 인접행렬 질문있습니다.

0

66

2