Skip to content
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

[동적계획법] 10월 3일 #8

Open
wants to merge 3 commits into
base: main
Choose a base branch
from
Open

[동적계획법] 10월 3일 #8

wants to merge 3 commits into from

Conversation

hak2711
Copy link
Collaborator

@hak2711 hak2711 commented Oct 3, 2022

내용 & 질문

제출합니다!

<기존 제출>

2156, 11048, 11053, 20923

<추가 제출>

20055

@Dong-droid
Copy link

Dong-droid commented Oct 3, 2022

P3. 20923 코드 리뷰 완료
푸시느라 수고하셨습니다! 🔥 🚒 🔥 🚒
인덱스를 이용해서 깔끔하게 푸셨군요! 👏 👏 👏
클린 코드를 위해서 몇 가지를 제안 드립니다! 참고하시기 바랍니다 :)

Comment on lines +7 to +9

deque<int> deck[2], ground[2];

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P3. 클린 코드를 위해서 전역 변수 사용을 지양하시기를 부탁드립니다!! 😄

Comment on lines +12 to +14
//도도가 종을 칠 수 있는 경우
if (ground[0].size() && ground[0].back() == 5)
return 0;

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P3. 클린 코드를 위해서 중괄호를 사용해주시기를 부탁드립니다!! 🎃

Comment on lines +39 to +41

while (m--)
{
Copy link

@Dong-droid Dong-droid Oct 3, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P3. 여기 while문부터는 함수화를 해주시면 👍 코드가 될 것 같습니다!

Comment on lines +57 to +63
deck[w].insert(deck[w].end(), ground[1 - w].begin(), ground[1 - w].end());
deck[w].insert(deck[w].end(), ground[w].begin(), ground[w].end());
ground[1 - w].clear();
ground[w].clear();
}

turn = 1 - turn;

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P3. 1-w 도 좋지만 저희에게는 !이 있죠!!!!
!turn !w 이렇게요~ 😀

Comment on lines +1 to +2
//참고한 블로그 링크 : https://seastar105.tistory.com/75
//deque 배열의 인덱스를 이용해 코드를 효율적으로 간소화시킨 아이디어를 참고
Copy link

@Dong-droid Dong-droid Oct 3, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍. 어디를 참고했다고 알려주시는 거 너무 좋습니다~ 🥇

Copy link

@jk0527 jk0527 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2. 11048 코드리뷰 완료

현아님 안녕하세요!
동적계획법을 잘 이해하고 문제 풀어주신 것 같아요!🥰 다만 말씀드린 것처럼 더미 인덱스를 확용하면 if-else문을 한줄로 해결 가능합니다!! 더미 인덱스 사용 방법을 익히시면 앞으로도 도움이 많이 될 것 같아요! 수고하셨습니다! 궁금한 점이 있으면 리뷰어를 호출해주세요! 수고하셨습니다!! 😎😎

Comment on lines +18 to +29
if (i > 0 && j > 0)
{
dp[i][j] = max(max(dp[i - 1][j], dp[i][j - 1]), dp[i - 1][j - 1]) + board[i][j];
}
else if (i > 0)
{
dp[i][j] = dp[i - 1][j] + board[i][j];
}
else if (j > 0)
{
dp[i][j] = dp[i][j - 1] + board[i][j];
}
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

더미 인덱스(가장 앞줄이 0으로 채워진 vector)를 사용하면 이 부분을 한번에 처리할 수 있습니다!

Comment on lines +6 to +8
int n, m;
vector<vector<int>> board(n, vector<int>(m, 0));
vector<vector<int>> dp;
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

전역 변수 사용은 지양해주세요! 이 문제는 지역 변수로 충분히 해결 가능합니다!

Copy link

@flowersayo flowersayo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

11053 코드리뷰 완료

안녕하세요! 현아님 ㅎㅎ
저희가 PPT 에서 제공해드린 해결 가이드라인을 정확히 이해하시고 문제를 잘해결해주셨네요
사소한 커멘트만 몇개 남기고 갑니당 :)
동적계획법 과제도 수고 많으셨습니다 ~!😊

max_e = dp[j];
}
}
dp[i] += max_e;

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

흠 사실.. 정답 유무와는 크게 관계없는 부분이지만 += 보다는 = 로 쓰는게 의도를 더 잘 드러낼 수 있을 것 같아용! ㅎㅎ

max_e = dp[j];
}
}
dp[i] += max_e;

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

p2. i번째 루프에서 이전 원소 ( 0 ~ i-1) 들로 끝나는 최장 수열의 길이 중 최댓값을 저장하기 위해서 max_e 변수를 사용해주셨는데요! max_e를 없애고 바로 dp[i]에 최댓값을 갱신하는 식으로 작성하면 코드가 조금 더 간결해질 것 같아요 :)
그러나 사실 짧다고 다 좋은 코드는 아니니,, 취향껏 받아들여주시면 될 것 같습니다😊😊

Copy link

@Minseo10 Minseo10 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1. 2156코드리뷰 완료
안녕하세요 현아님!
백준에서 코드를 돌려봤더니 틀렸습니다가 뜨네요 😭 제가 에러난 것으로 추정되는 부분에 코멘트 남겼으니 확인 후 수정해주세요~!
이번 과제도 수고하셨습니다 😄

Comment on lines 13 to 16
for (int i = 3; i <= n; i++)
{
dp[i] = max(dp[i - 2] + inputs[i], dp[i - 1]);
}
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1. 유선님 백준에서 코드를 돌려봤더니 '틀렸습니다' 가 뜨네요...! 이 부분에서 dp 점화식을 잘못 세운 것 같아요. 문제 조건으로 '연속으로 3번 이상 마시지 않는다' 니까, i-3번째 잔까지 최대로 마시고 i-2번째에서 안마시는 경우도 고려해야 하지 않을까요?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

제가 백준에서 통과한 코드가 아니라 다른 코드를 업로드했네요ㅜㅜ 번거롭게 하여 죄송합니다. 재업로드했습니다!!

@hak2711 hak2711 requested a review from Minseo10 October 4, 2022 23:17
@kwakrhkr59
Copy link

[추가제출 확인 완료]
안녕하세요 현아님~ 추가제출 확인 완료되셨습니다😊
이번 과제도 수고 많으셨습니다:)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants