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 two pointer #11

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

11 two pointer #11

wants to merge 12 commits into from

Conversation

jaeeunHwang
Copy link
Collaborator

인적사항

학번 : 2176427
이름 : 황재은

과제제출

기존 제출 : 2531, 14503, 20922, 2473, 20437
추가 제출 :

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 +10 to +13
// 청소 상태를 나타내는 상수
const int CLEAN = 0;
const int WALL = 1;
const int CLEANED = 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 +34 to +35
clean(nx, ny, nextDirection);
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, 2531(P3)
안녕하세요 재은님!
두 문제 모두 투포인터를 활용해서 잘 풀어주신 것 같습니다 👍
코드를 정말 깔끔하게 잘 작성하시는 것 같아요!!
도전문제까지 풀어주셔서 정말 좋습니다 ^^
과제하느라 고생많으셨습니다🥰💚

}

//연산 & 출력
cout << findSolution(arr, k) << '\n';

Choose a reason for hiding this comment

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

연산부를 별도 메소드로 분리해서 구현해주셨네요! 덕분에 코드가 더 깔끔한 것 같아 좋습니다 👍👍


using namespace std;

int findSolution(const vector<int>& arr, int k) {

Choose a reason for hiding this comment

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

벡터를 const로 전달해주셨네요! 이런 사소한 부분이 코드 퀄리티를 높여주는 것 같아요 좋습니다 🥰🥰

Comment on lines +13 to +25
while (right < n) {
frequency[arr[right]]++;

// 현재 구간의 서로 다른 숫자의 개수가 k 초과라면
while (frequency[arr[right]] > k) {
frequency[arr[left]]--;
left++;
}

// 현재 구간의 길이가 최대인지 확인하고 right 증가
maxLength = max(maxLength, right - left + 1);
right++;
}

Choose a reason for hiding this comment

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

투포인터 탐색의 종료 조건이나 각 포인터의 이동 조건을 모두 잘 파악해서 구현해주신 것 같습니다! 👍

crt_ans++;
}
check[sushi[i]]++;
sushi[n + i] = sushi[i];

Choose a reason for hiding this comment

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

P3. sushi 벡터를 처음부터 n+k 크기로 생성하고 초기화해주셨네요. 이 풀이도 매우 좋습니다! 그런데 인덱스를 모듈러 연산하는 방식에도 한 번 익숙해지시면 좋을 것 같아요. 조금이나마 메모리 절약에 도움이 될 수도 있으니까요 :)

check[sushi[i + k]]++;
}

cout << ans;

Choose a reason for hiding this comment

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

P3. 한 메소드에서 연산과 출력 모두를 수행하고 있네요. 메소드는 출력까지 수행하는 것보다 담당하고 있는 핵심 로직에만 집중하는 게 클린 코드 측면에서 조금 더 좋을 것 같습니다!

Comment on lines +22 to +33
ans = max(crt_ans, ans);

check[sushi[i]]--;

if (check[sushi[i]] == 0) {
crt_ans--;
}

if (check[sushi[i + k]] == 0) {
crt_ans++;
}
check[sushi[i + k]]++;

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