-
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월 8일 #12
base: main
Are you sure you want to change the base?
The head ref may contain hidden characters: "10_\uC774\uBD84\uD0D0\uC0C9"
[이분탐색] 11월 8일 #12
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.
[이분 탐색 코드 리뷰 완료]
10815(P3), 16401(P3)
안녕하세요 연수님! 코드 리뷰 완료되었습니다👍
도전문제까지 모두 다 풀어주셨네요! 대단하십니다👍👍
몇 가지 사소한 코멘트 남겼습니다.
궁금하신 점이 있다면 리뷰어를 호출해주세요!
} | ||
|
||
// 숫자 카드 오름차순 정렬 | ||
sort(arr, arr + n); |
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.
이분 탐색을 위해서는 자료가 정렬되어 있어야 한다는 성질을 잘 이용해주셨네요!👍
cin >> num; | ||
|
||
// 이분 탐색: 해당 숫자가 있는 경우 | ||
if (binary_search(arr, arr + n, num)) |
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.
함수 사용 좋습니다!
int m, n, result; | ||
vector<int> arr; |
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
알튜비튜에서는 정말 필요한 상황이 아닐 때에는 값이 무분별하게 수정되는 것을 막기 위해 전역변수 사용을 지양하고 있습니다! m, n, arr은 인자로 넘기고, result는 bs의 값으로 리턴하는 식으로 수정할 수 있을 것 같아요!
|
||
sort(arr.begin(), arr.end()); | ||
|
||
bs(1, arr[n - 1]); |
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.
과자의 길이가 최소와 최대가 될 때를 각각 잘 찾아주셨네요!
int m, n, result; | ||
vector<int> arr; | ||
|
||
void bs(int s, int e) |
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.
매개변수 탐색으로 문제를 잘 풀어주셨네요!
if (cnt >= m) | ||
{ | ||
if (result < mid){ | ||
result = mid; | ||
} | ||
bs(mid + 1, e); | ||
} | ||
else { | ||
bs(s, mid - 1); | ||
} |
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.
포인터를 움직이는 조건을 잘 찾아주셨어요!
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)14500
안녕하세요 연수님, 14500번 코드리뷰 완료했습니다.
전체적으로 코드를 간결하게 잘 작성해 주시고 핵심 기능도 빠짐없이 구현해 주셨습니다.😍 함수 구현 관련해 코멘트 남겨드렸으니 확인해주시면 감사하겠습니다. 수고 많으셨습니다.
vector<vector<int>> map; | ||
vector<vector<bool>> visit; | ||
vector<int> dy = {-1, 1, 0, 0}; | ||
vector<int> dx = {0, 0, -1, 1}; |
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.
계속해서 쓰이는 벡터들을 전역으로 선언해 주셨네요!👍
visit[i][j] = true; | ||
dfs(i, j, 1, map[i][j], visit); | ||
|
||
visit[i][j] = false; | ||
check(i, j); |
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.
visit벡터를 사용하지 않아도 map벡터에 해당하는 칸의 수를 0으로 잠시 바꾸어두는 방식으로도 문제를 해결할 수 있습니다. 샘플코드 참고하셔서 한 번 알아두시는 것도 좋을 것 같습니다.😊
void check(int y, int x) | ||
{ | ||
if (y < n - 2 && x < m - 1){ | ||
ans = max(ans, map[y][x] + map[y + 1][x] + map[y + 2][x] + map[y + 1][x + 1]); | ||
} | ||
|
||
if (y < n - 2 && x > 0){ | ||
ans = max(ans, map[y][x] + map[y + 1][x] + map[y + 2][x] + map[y + 1][x - 1]); | ||
} | ||
|
||
if (y < n - 1 && x < m - 2){ | ||
ans = max(ans, map[y][x] + map[y][x + 1] + map[y][x + 2] + map[y + 1][x + 1]); | ||
} | ||
|
||
if (y > 0 && x < m - 2){ | ||
ans = max(ans, map[y][x] + map[y][x + 1] + map[y][x + 2] + map[y - 1][x + 1]); | ||
} | ||
} |
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함수 내에서 cnt==2인 경우마다 현재 위치에서 다시 dfs를 진행하여 처리할 수도 있다는 점을 알아두시면 좋을 것 같습니다.
###과제제출
기존제출:
10815.cpp
14500.cpp
16401.cpp
2343.cpp
3079.cpp