-
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
9월 13일 [정수론] 과제 제출합니다 #3
base: main
Are you sure you want to change the base?
The head ref may contain hidden characters: "\uC815\uC218\uB860"
Conversation
기존제출: 1213, 2108, 2168, 6588
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. 1213 코드 리뷰 완료
안녕하세요 도희님~
문제 푸시느라 정말 고생 많으셨어요!!👍👍
코드가 깔끔하고, 주석도 적절히 적혀있어서 코드리뷰드리기 정말 편했습니다!
약간의 코멘트를 남겼습니다.
궁금한 점 있으시면 리뷰어를 호출해주세요~
수고하셨습니다!!
|
||
using namespace std; | ||
|
||
string ans = ""; //��� ������ string |
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. 전역변수가 아니라 palindrome 함수 안의 지역변수로 선언해도 좋을 것 같습니다
void palindrome(vector<int>& v, int idx) { | ||
for (int i = 0; i < 26; i++) { //��ݺ� ���ĺ� ä��� | ||
for (int j = 0; j < v[i] / 2; j++) { //�� ��ݸ�ŭ �տ� ä���, ������ ���� ��(�Ĺݺ�)�� ä��� | ||
ans += (i + 'A'); | ||
} | ||
} | ||
|
||
if (idx != -1) { //����� Ȧ���� ���ĺ� �߰� | ||
ans += (idx + 'A'); | ||
} | ||
|
||
for (int i = 25; i >= 0; i--) { //�Ĺݺ� ���ĺ� ä��� | ||
for (int j = 0; j < v[i] / 2; j++) { | ||
ans += (i + 'A'); | ||
} | ||
} | ||
|
||
cout << ans << '\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.
p3. reverse 함수를 사용하여 후반부 알파벳을 채우면, 코드를 약간 줄일 수 있을 것 같습니다.
더불어, ans를 반환해서 main함수에서 출력하면 더욱 좋을 것 같습니다.
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.
6558 코드리뷰 완료
안녕하세요 도희님!
주석도 친절하고, 문제도 정말 깔끔하게 잘 해결해주셔서 간단한 커멘트 몇개 남겼습니다 :)
p1코멘트는 꼭 수정해주셨으면 하는 부분이고, p2/p3는 참고만 하셔도 괜찮습니다~!
바로 머지해주셔도 될 것 같아요!
수고하셨습니다! 🥰
bool answer = false; | ||
|
||
for (int i = 2; i <= n; i++) { | ||
if ((isPrime[i]) && (isPrime[n - i])) { //Ư� �Ҽ� �ֿ� ���ԵǷ��, n-Ư� �Ҽ��� ���� ���;ȿ��� true��� ������Ѵ�(�Ҽ���Ѵ�) |
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.
맞아요! 둘중 하나의 소수가 결정되면 나머지 하나 또한 자동으로 결정된다는 점을 잘 캐치해주셨네요 🥰
그런데 주석이 깨져보여서 ㅜㅜ 문제 해결하시고 머지하면 더 좋을 것 같습니다~!
void goldBach(int n, vector<bool>& isPrime) { //������ ��� �ذ� | ||
|
||
bool answer = false; | ||
|
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. true 나 false 를 바로 리턴하도록 처리하면 answer라는 변수를 따로 만들지 않아도 괜찮겠네요!
for (int i = 2; i <= n; i++) { | ||
if ((isPrime[i]) && (isPrime[n - i])) { //Ư� �Ҽ� �ֿ� ���ԵǷ��, n-Ư� �Ҽ��� ���� ���;ȿ��� true��� ������Ѵ�(�Ҽ���Ѵ�) | ||
|
||
cout << n << " = " << i << " + " << n - i << '\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.
p3. 조금 더 재사용성이 높은 코드 작성을 위해 두 홀수 소수 중 더 작은 값을 리턴 하도록 구성하고
출력문은 main 에서 처리해주도록 했어도 좋았을 것 같아요!
저희 튜터링은 입출력과 관련한 처리는 모두 main 에서 할 수 있도록 권장 드리고 있답니다~!
2168 코드리뷰 완료 제출해주신 코드 잘봤습니다! |
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. 2108번 코드리뷰 완료
안녕하세요, 도희님! 코드에 주석 상세하게 달아주셔서 리뷰하기 수월했어요 감사합니다😄
꼭 필요하지 않은 코드 관련해서 코멘트 남겼으니 참고해주세요.
문제 푸느라 고생하셨어요! 궁금한 게 생기시면 리뷰어로 호출해주세요😃😃
average = sum / v.size(); | ||
return round(average); //�ݿø��Լ� round()��� |
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. average
변수가 한 번 쓰이고 마니, 바로 리턴에 넣어서 한 줄로 합치면 어떨까요?
for (int i = 0; i < v.size(); i++) { | ||
sum += v[i]; | ||
} |
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. sum값은 main함수에서 값을 입력받을 때 한번에 해결이 가능해요! 이렇게 하면 불필요한 반복을 줄일 수 있습니다😀
#include <map> | ||
|
||
using namespace std; | ||
|
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 midindx; //�߾Ӱ��� �ġ�� �ε��� | ||
midindx = (v.size()-1) / 2; //���ʹ� �ε��� 0���� �����ϹǷ� v.size()-1������� | ||
return v[midindx]; |
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. midindx
가 한번 쓰이고 마니, 바로 인덱스에 넣어줘도 좋을 것 같아요!
map<int, int> m; //(value, ��) ������ map | ||
|
||
for (int i = 0; i < n; i++) { | ||
if (m.find(v[i]) != m.end()) { //map�� value�� �̹� ����ϸ� �� 1 �� | ||
m[v[i]]++; | ||
} | ||
else { //��ο� value�� ����� �߰�, �� 1 ���� | ||
m[v[i]] = 1; | ||
} | ||
} | ||
|
||
vector<pair<int, int>> vec(m.begin(), m.end()); //map� vector�� �̵� |
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. map 대신에 처음부터 vector를 이용할 수 있을것같아요!
} | ||
|
||
int range(int n, vector<int>& v) { //range���ϱ� | ||
sort(v.begin(), v.end()); //������ ��� |
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. int middle(vector<int>& v)
함수와 int range(int n, vector<int>& v)
함수에서 각각 정렬을 해주셨는데, main으로 빼서 한 번만 연산을 수행하면 시간효율이 더 좋아질거에요!
int n; | ||
cin >> n; //n� Ȧ�� | ||
|
||
if (n % 2 == 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.
p2. 문제 조건에서 n이 홀수라고 주어졌으므로, 조건문을 쓸 필요가 없습니다.
int k; | ||
cin >> k; | ||
vec[i] = k; |
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. 변수 k
가 한번 쓰이고 마니, 바로 vec[i]
에 입력받는건 어떨까요?
int middle(vector<int>& v) { //�߾Ӱ� ���ϱ� | ||
sort(v.begin(), v.end()); //��� | ||
int midindx; //�߾Ӱ��� �ġ�� �ε��� | ||
midindx = (v.size()-1) / 2; //���ʹ� �ε��� 0���� �����ϹǷ� v.size()-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.
p3. C++에서 정수의 나눗셈은 자동으로 내림이 되어서 (v.size()-1) / 2
결과와 v.size() / 2
의 결과는 같습니다!
} | ||
|
||
int mode(int n, vector<int>& v) { //�ֺ� ���ϱ� | ||
map<int, int> m; //(value, ��) ������ map |
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. 처음 입력을 받아올 때 1차원 벡터를 이용하지 않고, 각 숫자와 빈도수를 함께 저장하는 방법도 있으니 참고해주세요! 자세한 구현방식은 샘플코드(2108_2.cpp)를 보시면 됩니다😊
int numOfTiles(int x, int y) { | ||
int num; | ||
|
||
//����+����-�ִ���� = �밢���� ���� Ÿ�� ���� | ||
num = x + y - gcdRecursion(max(x, y), min(x, y)); | ||
|
||
return 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.
p2.
저희 튜터링에서 코드 재사용이 용이하도록 풀이에 함수를 사용하는 방법을 권장드리고 있지만, 이 부분은 x+y-gcd 값을 num 변수에 대입, return 하는 기능만 수행하기에 굳이 함수화 하지 않아도 될 것 같아요! return 한 결과를 뒤에서 수정하는 일도 없고 바로 출력만 하기에 main에서 출력문 작성시 바로 사용할 수 있을 것 같아 보이네요:)
또한, gcd 함수 호출 시에 둘 중 어느 값이 큰지 비교해주셨는데 이를 수정할 수 있어보여요!
gcd 함수를 나머지 연산을 통해 구현해주셨기 때문에, 직접 비교하지 않아도 대소관계가 명확해지겠죠!
예를 들어,
gcd(4,2)라면, (4,2)->(2,0)=>2
gcd(2,4)라면, (2,4)->(4,2)->(2,0)=>2
처럼 같은 결과가 나오게 됩니다! 나머지 연산의 특징에 대해서 한 번 생각해보시면 좋을 것 같네요~!
기존제출: 1213, 2108, 2168, 6588