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

0923 백트래킹 #8

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

0923 백트래킹 #8

wants to merge 4 commits into from

Conversation

seoyamin
Copy link
Contributor

내용 & 질문

제출합니다!

<기존 제출>

15563, 10971

@seoyamin
Copy link
Contributor Author

10971번은 반례를 찾지 못해서 피드백 부탁드리고 싶습니다!ㅠㅠ

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.

15663 코드리뷰 완료

너무 완벽해서 .. 정말 더 드릴 커멘트가 없었네요...!
이번 백트래킹 과제도 정말 고생 많으셨습니다 🤗❤✨

Comment on lines +23 to +34
// 수열 만들기
int before = -1; // 바로 이전에 선택한 값 저장
for (int i = 0; i < num.size(); i++) {
if (!check[i] && num[i] != before) {
result[len] = num[i];
check[i] = true;
before = num[i]; // before 갱신
backTracking(len + 1);

check[i] = false;
}
}

Choose a reason for hiding this comment

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

맞아요! 이전 수열의 마지막 항과 새로 추가할 값이 같으면 중복된 수열이 된다는 점을 활용하면 되는 문제였어요.
기본 재귀 순열에서 이전에 선택된 값을 저장하는 before 변수를 사용하여
cnt 번째 같은 숫자가 중복되서 사용되지 않도록 구현해주셨네요!🥰

@bsa0322
Copy link

bsa0322 commented Sep 30, 2022

10971번은 반례를 찾지 못해서 피드백 부탁드리고 싶습니다!ㅠㅠ

@seoyamin 민서님 안녕하세요😊 해결하시지 못한 문제는 #질문 채널에 남겨주시면 더욱 빨리 답변을 드릴 수 있어요~!

우선 정말 아쉬운 부분에서 반례가 생기고 있는데요! main에서 현재 start 지점을 다르게 해서 보내주시고 있죠~! start 변수에 대해서는 잘 보내주셨는데, 현재 도시에 대한 변수가 제대로 보내지고 있는지 확인해볼까요?

정말 아쉬운 부분이라, 해당 문제는 오늘까지 풀어서 다시 맞았습니다 뜨시면 제출 인정하도록 하겠습니다! 수고하셨습니다 🥰🥰

@seoyamin
Copy link
Contributor Author

@bsa0322 튜터님!!! 덕분에 문제 해결했습니다!!!!! 와!!!!!😆 정말 감사드립니다ㅠㅠ
혼자 공부할 때는 끝까지 노력했던 문제를 결국 해결하지 못해서 아쉬웠던 적이 많았는데,
요즘은 알튜비튜 튜터님들 덕분에 확실하게 공부하고 마무리 지을 수 있어서 정말 많이 배워갑니다💕
앞으로는 질문 게시판도 많이 활용하겠습니다!! 항상 감사드립니다~ 즐거운 주말 되세요🥰

Copy link

@bsa0322 bsa0322 left a comment

Choose a reason for hiding this comment

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

p2. 10971 코드리뷰 완료

민서님 안녕하세요 😊 우선 리뷰가 늦어진 점 정말 죄송합니다 😭

코드 너무 깔끔하게 잘 짜주시고, 주석도 써주셔서 좋았습니다 🥰💘

해당 문제는 모든 도시를 시작점으로 해서 접근하기 쉽지만, 사실 그러지 않아도 되는 문제인데요! 관련 코멘트 남겼으니 확인해주셔도 좋을 것 같아요 🥰🥰🥰

더불어 사소하지만, C++에서는 변수 이름은 소문자와 언더바를 사용하는 스네이크 표기법을 규정으로 갖고 있어요 😊 협업 시에는 사소한 컨벤션을 지키는 것도 중요해지니, 지금부터 익혀주셔도 좋을 것 같습니다!

추가 코멘트를 드리자면, 여기서 가지치기를 한 번 더 할 수 있는 방법이 있는데요! 만약 백트래킹을 돌면서 아직 count가 n이 되진 않았지만, cost_current 가 현재의 정답(minCost)보다 큰 경우를 생각해볼까요? 해당 경우라면 사실 굳이 더 탐색을 해봤자 cost_current 가 더 커지기만 할텐데, 최소값을 구하는 현재 문제에서는 의미가 없을 거예요! 그렇다면 어떻게 가지치기 해줄 수 있을까요? 😊

정답은 샘플코드에 있으니, 꼭 고민해보시고, 샘플코드 확인해주셔도 좋을 것 같습니다~!

질문 있으시면 언제든 리뷰어로 호출해주세요!
수고하셨습니다 🥰

Comment on lines +51 to +55
for (int i = 0; i < n; i++) {
check[i] = true;
backTracking(i, i, 0, 1); // 출발지 도시는 방문하며 시작하므로 count = 1부터 시작
check[i] = false;
}
Copy link

Choose a reason for hiding this comment

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

p2. 시작 도시부터 모든 도시에 대해 검사해주셨네요~! 해당 방식도 아주 좋습니다 🔥
그런데, 만약 0번 도시에서 시작해서 한 사이클이 모두 돌았다면, 다른 도시에서 시작한 것도 0번 도시에서 시작한 걸로 커버가 가능하지 않을까요? 말 그대로 사이클은 돌고 도니까요! 😄

해당 부분의 로직을 더욱 간단히 구현해볼 수 있을 것 같아요. 🥰

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.

3 participants