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

[투포인터] 11월 15일 #13

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

[투포인터] 11월 15일 #13

wants to merge 5 commits into from

Conversation

sooooscode
Copy link
Collaborator

###과제제출
기존제출:
14503.cpp
20437.cpp
20922.cpp
2473.cpp
2531.cpp

Copy link

@kimhj010502 kimhj010502 left a comment

Choose a reason for hiding this comment

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

[투 포인터 구현 문제 코드 리뷰 완료]

14503(P3)

연수님 안녕하세요!
과제하시느라 수고 많으셨습니다!! 어려운 문제인데도 잘 풀어주셨네요! 🥰 도전 문제까지 모두 풀어서 제출하신 것 너무 좋아요!!
코드에 대한 주석도 너무 좋았습니다 👍
몇 가지 사소한 코멘트 드렸습니다.
궁금한 점이 있으면 리뷰어를 호출해주세요!

Comment on lines +29 to +30
clean(nx, ny, dir);
return;

Choose a reason for hiding this comment

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

DFS 알고리즘으로 풀이해주셨네요!👍

Copy link

@mingulmangul mingulmangul left a comment

Choose a reason for hiding this comment

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

[투포인터 알고리즘 코드 리뷰 완료]
20922(P2), 2531
안녕하세요 연수님!
두 문제 모두 투포인터를 잘 활용해서 풀어주신 것 같습니다👍
도전문제까지 풀어주셔서 정말 좋습니다 ^^
과제하느라 고생많으셨어요🥰💚

Comment on lines +32 to +34
endIdx = i;
limit[num[endIdx]]++;
maxLen = max(endIdx - startIdx + 1, maxLen);

Choose a reason for hiding this comment

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

P2. for문 내에서 i를 사용할 때, iendIdx로 옮긴 뒤에 endIdx를 그대로 사용하고 있네요. 두 변수의 역할이 중복되어 보여요. 하나를 제거해도 로직에는 문제가 없어 보입니다!

Comment on lines +38 to +51
while (true)
{
if (num[startIdx] == num[i])
{
startIdx++;
endIdx = i;
break;
}
else
{
limit[num[startIdx]]--;
startIdx++;
}
}

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 만으로 같은 효과를 낼 수 있을 것 같습니다!

Comment on lines +28 to +51
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++;
}
}

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 +48
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++;
}

Choose a reason for hiding this comment

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

로직도 구현도 깔끔하게 잘 풀어주신 것 같습니다! 👍👍 주석도 꼼꼼히 달아주셔서 좋네요 😊

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