-
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월 15일 #13
base: main
Are you sure you want to change the base?
The head ref may contain hidden characters: "11_\uD22C\uD3EC\uC778\uD130"
[투포인터] 11월 15일 #13
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.
[투 포인터 구현 문제 코드 리뷰 완료]
14503(P3)
연수님 안녕하세요!
과제하시느라 수고 많으셨습니다!! 어려운 문제인데도 잘 풀어주셨네요! 🥰 도전 문제까지 모두 풀어서 제출하신 것 너무 좋아요!!
코드에 대한 주석도 너무 좋았습니다 👍
몇 가지 사소한 코멘트 드렸습니다.
궁금한 점이 있으면 리뷰어를 호출해주세요!
clean(nx, ny, dir); | ||
return; |
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.
[투포인터 알고리즘 코드 리뷰 완료]
20922(P2), 2531
안녕하세요 연수님!
두 문제 모두 투포인터를 잘 활용해서 풀어주신 것 같습니다👍
도전문제까지 풀어주셔서 정말 좋습니다 ^^
과제하느라 고생많으셨어요🥰💚
endIdx = i; | ||
limit[num[endIdx]]++; | ||
maxLen = max(endIdx - startIdx + 1, maxLen); |
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.
P2. for문 내에서 i
를 사용할 때, i
를 endIdx
로 옮긴 뒤에 endIdx
를 그대로 사용하고 있네요. 두 변수의 역할이 중복되어 보여요. 하나를 제거해도 로직에는 문제가 없어 보입니다!
while (true) | ||
{ | ||
if (num[startIdx] == num[i]) | ||
{ | ||
startIdx++; | ||
endIdx = i; | ||
break; | ||
} | ||
else | ||
{ | ||
limit[num[startIdx]]--; | ||
startIdx++; | ||
} | ||
} |
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.
P2. 무한 루프 안에 if문을 추가해 종료 조건을 설정해주셨네요! 이 경우에는 while의 조건에 종료 조건을 설정하는 건 어떨까요? 이렇게 하면 if-else를 추가할 필요 없이 while 만으로 같은 효과를 낼 수 있을 것 같습니다!
for (int i = 1; i < n; ++i) | ||
{ | ||
if (limit[num[i]] < k) | ||
{ | ||
endIdx = i; | ||
limit[num[endIdx]]++; | ||
maxLen = max(endIdx - startIdx + 1, maxLen); | ||
} | ||
else | ||
{ | ||
while (true) | ||
{ | ||
if (num[startIdx] == num[i]) | ||
{ | ||
startIdx++; | ||
endIdx = i; | ||
break; | ||
} | ||
else | ||
{ | ||
limit[num[startIdx]]--; | ||
startIdx++; | ||
} | ||
} |
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. 두 개의 포인터를 어떻게 움직여야 하는지 잘 캐치하고 구현해주신 것 같습니다! 사소하지만, 이렇게 핵심 로직을 구현한 연산 부분은 별도의 메소드로 분리하면 코드가 조금 더 깔끔해 보일 것 같아요
int s_id = sushi[i]; // 처음 먹은 초밥 종류 | ||
int e_id = sushi[(i + k) % n]; // 마지막 + 1번째 먹을 초밥 종류 | ||
|
||
if (--eating[s_id] == 0){ // 처음 먹은 초밥 종류 더 이상 없을 때 | ||
count--; | ||
} | ||
|
||
if (++eating[e_id] == 1){ // 마지막 + 1번째 먹을 초밥이 처음 먹는 것일 때 | ||
count++; | ||
} |
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.
로직도 구현도 깔끔하게 잘 풀어주신 것 같습니다! 👍👍 주석도 꼼꼼히 달아주셔서 좋네요 😊
###과제제출
기존제출:
14503.cpp
20437.cpp
20922.cpp
2473.cpp
2531.cpp