-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[ 트리 ] 11월 21일 #11
base: main
Are you sure you want to change the base?
The head ref may contain hidden characters: "12_\uD2B8\uB9AC"
[ 트리 ] 11월 21일 #11
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[12주차 트리 코드리뷰 완료]
15681(P3), 5639(P3), 1967(P3), 24545(P3)
안녕하세요 하린님! 트리 필수 2문제, 도전 2문제 리뷰 완료했습니다. 도전문제까지 모두 푸시느라 정말 수고 많으셨습니다.😍
void dfs(int num, int upperN) { | ||
visited[num]=true; | ||
for(int i=0;i<v[num].size();i++){ | ||
int next=v[num][i]; | ||
if(visited[next]==false){ | ||
dfs(next,num); | ||
} | ||
} | ||
if(upperN!=-1){ | ||
num_arr[upperN]+=num_arr[num]; | ||
} | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
문제 조건에 맞게 dfs로 구현해 주셨네요. 함수 로직을 잘 짜주셔서 특별히 코멘트 드릴 점은 없습니다. Indentation만 살짝 정리하면 보기 좋을 것 같습니다.😊
ios::sync_with_stdio(false); | ||
cin.tie(NULL);cout.tie(NULL); | ||
|
||
int n, o, p, q, answer=0; | ||
|
||
cin >> n; | ||
|
||
for(int i=1;i<n;i++){ | ||
cin >> o >> p >> q; | ||
|
||
board[o].push_back(make_pair(p,q)); | ||
board[p].push_back(make_pair(o,q)); | ||
} | ||
|
||
dfs(1,0,answer); | ||
|
||
memset(visited,false,sizeof(visited)); | ||
|
||
dfs(endI,0,answer); | ||
|
||
cout << answer; | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
로직을 깔끔하게 잘 짜 주셨습니다. 주석만 몇 개 추가하면 더 좋은 코드가 될 것 같아요.👍👍
void dfs(int x, int len, int &answer){ | ||
|
||
if(visited[x]==true){ | ||
return; | ||
} | ||
|
||
visited[x]=true; | ||
|
||
if(len>answer){ | ||
answer=len; | ||
endI=x; | ||
} | ||
|
||
for(int i=0;i<board[x].size();i++){ | ||
dfs(board[x][i].first,len+board[x][i].second,answer); | ||
} | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
완벽합니다👍
void searchTree(int start, int end){ | ||
int i; | ||
|
||
if(start>=end){ | ||
return; | ||
} | ||
if(start==end-1){ | ||
cout << tree[start] << '\n'; | ||
return; | ||
} | ||
|
||
for(i=start+1;i<end;i++){ | ||
if(tree[start]<tree[i]){ | ||
break; | ||
} | ||
} | ||
|
||
searchTree(start+1,i); | ||
searchTree(i,end); | ||
cout << tree[start] << '\n'; | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
하린님만의 방법으로 잘 구현해 주셨습니다. 해설강의에서 언급한 dfs를 이용한 방법도 한 번 고려해 보시면 좋을 것 같습니다. 수고하셨어요.😍
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[트리 구현 코드 리뷰 완료]
3190(P3)
안녕하세요 하린님
구현할 것이 많은 문제였는데 정말 깔끔하게 잘 풀어주신 것 같습니다 👍
간단한 코멘트만 남겼으니 한 번 읽어봐주세요.
과제하느라 고생많으셨어요 🥰
char d; | ||
|
||
int board[101][101]; | ||
bool visited[101][101]; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
P3. visited
배열을 이용해서 뱀의 위치를 나타내셨네요! 이것도 좋은 풀이지만 위에 board
를 int
배열로 정의했으니 한 가지 숫자를 더 사용해서 뱀이 있는 칸을 나타내면 어떨까요? 이렇게 하면 메모리 공간을 조금이나마 절약할 수 있어 보입니다!
if(board[ny][nx]==1){ | ||
board[ny][nx]=0; | ||
snake.push(make_pair(nx, ny)); | ||
visited[ny][nx]=true; | ||
} | ||
else{ | ||
snake.push(make_pair(nx,ny)); | ||
visited[ny][nx]=true; | ||
visited[snake.front().second][snake.front().first]=false; | ||
snake.pop(); | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
P3. if와 else 안의 내용에 겹치는 부분이 있다면 중복 제거를 위해 if문 밖에서 한 번만 수행하는 것이 좋습니다 :)
for(int i=0;i<l;i++){ | ||
|
||
int num; | ||
|
||
cin >> num >> d; | ||
|
||
while(cnt<num||i==l-1){ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
명령어들을 따로 저장해두지 않고 입력 받을 때마다 게임을 진행하셨네요! 저는 생각하지 못한 방식인데 이런 풀이도 정말 좋은 것 같습니다 👍
인적사항
학번: 2071079
이름: 이하린
과제제출
기존 제출: 3190, 1967, 5639, 15681, 24545
추가 제출: