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

[투포인터] 1976435 황채원 #321

Open
wants to merge 1 commit into
base: 1976435-황채원
Choose a base branch
from

Conversation

uommou
Copy link

@uommou uommou commented May 16, 2023

인적사항

학번: 1976435
이름: 황채원


과제 제출

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


Copy link
Contributor

@kimyu0218 kimyu0218 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)

채원님 안녕하세요!
구현 문제 정말 깔끔하게 풀어주셨어요!🥰
함수 분리도 너무 좋았습니다 👍👍
몇 가지 코멘트 드렸습니다.
궁금한 점이 있으면 리뷰어를 호출해주세요!

int dx[] = { -1, 0, 1, 0 }; // 북, 동, 남, 서
int dy[] = { 0, 1, 0, -1 };

int countCleanedArea(vector<vector<int>>& room, vector<vector<int>>& cleaned, int r, int c, int d) {
Copy link
Contributor

Choose a reason for hiding this comment

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

함수 분리 좋아요 👍

}

if (!flag) {
if (room[r - dx[d]][c - dy[d]] == 1) break; // 후진이 불가능하면 작동 멈춤
Copy link
Contributor

Choose a reason for hiding this comment

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

한 줄이더라도 중괄호 사용해주세요 🥰🥰

cin >> r >> c >> d;

vector<vector<int>> room(N, vector<int>(M)); // 방 구조
vector<vector<int>> cleaned(N, vector<int>(M, 0)); // 치운 방 표시
Copy link
Contributor

Choose a reason for hiding this comment

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

그래프 탐색에서 방문체크는 필수적이죠. 현재 n x m 크기의 cleaned 벡터를 사용하셨네요! 하지만 room벡터에 방문체크를 표현할 수 있을 것 같아요! room 벡터를 활용해서 메모리 사용량을 줄여봅시다 🥰

Copy link

@kwakrhkr59 kwakrhkr59 left a comment

Choose a reason for hiding this comment

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

[투포인터 필수 알고리즘 코드리뷰 완료]
안녕하세요 채원님~ 투포인터 필수 알고리즘 문제 리뷰 완료되셨습니다😁 코드를 아주 깔끔하게 잘 작성해주셨더라고요👍👍 break를 사용해 시간 초과를 막아준 풀이도 인상깊었습니다😍 저희 샘플코드는 슬라이딩 윈도우를 사용한 풀이법을 제공해드리고 있으니 이 부분도 한 번 체크해보시면 좋을 것 같네요! 사소한 코멘트 몇 가지 남겨드렸습니다! 확인해보시고 질문 있으시면 언제든 리뷰어로 호출해주세요😊 수고 많으셨습니다~

}
else {
cout << result.first << " " << result.second << "\n";
}

Choose a reason for hiding this comment

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

메인 아주 깔끔하고 좋습니다👍👍

if (count == k) { // 업데이트
minlen = min(minlen, l - j + 1);
maxlen = max(maxlen, l - j + 1);
break;

Choose a reason for hiding this comment

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

break문을 사용해 시간초과를 적절히 막아주셨네요😍 대신 이 풀이법은 슬라이딩 윈도우보다는 이중 for문에 가까운 것 같네요! 저희가 제공해드리는 샘플 코드는 슬라이딩 윈도우 풀이법으로 제공되고 있으니 한 번 확인해보셔도 좋을 것 같네요😄


pair<int, int> solution(const string& str, int k) {

vector<int> alphabet(26, 0);

Choose a reason for hiding this comment

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

26은 알파벳의 개수를 나타내는 숫자네요! 이런 식으로 특정한 의미를 가지고 있는 숫자는 상수화 해주시면 보다 더 숫자의미를 명확하게 전달하는 데 도움이 될 것 같습니다😁


int longest(int N, int K, vector<int>& arr) {
int left = 0, right = 0, maxLength = 0;
unordered_map<int, int> count;

Choose a reason for hiding this comment

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

map을 사용해서 풀이해주셨네요!👍👍 가끔 map으로 count해줄 경우 map 자체가 느려서 시간초과가 나는 경우가 있는데 이런 경우에는 vector나 배열의 크기를 입력 가능한 최대 크기로 선언해준 뒤 count값을 저장해주는 방식으로 해결할 수 있으니 참고해주세요!

while (count[arr[right]] > K) { // k 초과 시 왼쪽 포인터 이동
count[arr[left]]--;
left++;
}

Choose a reason for hiding this comment

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

투포인터 활용 너무 좋습니다😍😍

}

int main() {
int N, K;

Choose a reason for hiding this comment

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

저희 튜터링에서는 변수명은 스네이크 표기법을, 상수명은 대문자를 사용해 표기할 것을 권장해드리고 있습니다! 함수명, 변수명, 상수명을 구별해서 사용해주시면 코드를 이해하는 데도 많은 도움이 되니 각각의 표기법은 구별해서 사용해주시면 좋을 것 같습니다😊

Copy link

@kwakrhkr59 kwakrhkr59 left a comment

Choose a reason for hiding this comment

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

안녕하세요 채원님~ 도전문제 중 2473번이 백준에서 통과가 되고 있지 않은 것 같아 연락드렸습니다! 딱 한 부분 때문에 돌아가고 있지 않은 것 같아요😥 코드가 통과가 되어야 과제 제출로 인정되니 꼭 확인하시고 수정해주세요😊

vector<int> findLiquid(int n, vector<int>& values) {
sort(values.begin(), values.end()); // 특성값 정렬

int nearestSum = INT_MAX; // 초기화

Choose a reason for hiding this comment

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

지금 딱 이 부분 때문에 백준에서 통과가 되고 있지 않은 것 같습니다...!문제의 조건을 한번 더 확인해주세요! INT_MAX의 값은 약 2,000,000,000인데, 각 용액의 값은 -1,000,000,000~1,000,000,000의 값을 가지죠! 세 용액의 합의 최대값은 얼마일까요🤔? 자료형만 한 번 다시 살펴봐주세요😊

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