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

9월 13일 [정수론] 과제 제출합니다 #3

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open

Conversation

Doren1
Copy link
Collaborator

@Doren1 Doren1 commented Sep 18, 2022

기존제출: 1213, 2108, 2168, 6588

기존제출: 1213, 2108, 2168, 6588
Copy link
Member

@dooli1971039 dooli1971039 left a 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
Copy link
Member

Choose a reason for hiding this comment

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

p3. 전역변수가 아니라 palindrome 함수 안의 지역변수로 선언해도 좋을 것 같습니다

Comment on lines 9 to 26
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';
Copy link
Member

Choose a reason for hiding this comment

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

p3. reverse 함수를 사용하여 후반부 알파벳을 채우면, 코드를 약간 줄일 수 있을 것 같습니다.
더불어, ans를 반환해서 main함수에서 출력하면 더욱 좋을 것 같습니다.

Copy link

@flowersayo flowersayo left a 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��� ������Ѵ�(�Ҽ���Ѵ�)

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;

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';

Choose a reason for hiding this comment

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

p3. 조금 더 재사용성이 높은 코드 작성을 위해 두 홀수 소수 중 더 작은 값을 리턴 하도록 구성하고
출력문은 main 에서 처리해주도록 했어도 좋았을 것 같아요!

저희 튜터링은 입출력과 관련한 처리는 모두 main 에서 할 수 있도록 권장 드리고 있답니다~!

@0321minji
Copy link

2168 코드리뷰 완료
안녕하세요 도희님!!

제출해주신 코드 잘봤습니다!
해당 문제가 코드는 간결해도 풀이 방법을 생각하기까지 오래걸리는 문제였는데 잘 풀이해주셨네요👍👍
함수 사용 관련해서 간단한 코멘트 남겨드렸으니 참고하시면 좋을 것 같습니다~~!
+서연님이 말씀해주신 것처럼 주석이 깨져보여서요..! 제가 파일 수정창에 직접 들어가면 보이긴 하는데 그래도 수정해주시면 감사하겠습니다@.@
수고하셨어요!!🙌🙌

Copy link

@grdnr13 grdnr13 left a comment

Choose a reason for hiding this comment

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

p2. 2108번 코드리뷰 완료
안녕하세요, 도희님! 코드에 주석 상세하게 달아주셔서 리뷰하기 수월했어요 감사합니다😄
꼭 필요하지 않은 코드 관련해서 코멘트 남겼으니 참고해주세요.
문제 푸느라 고생하셨어요! 궁금한 게 생기시면 리뷰어로 호출해주세요😃😃

Comment on lines +15 to +16
average = sum / v.size();
return round(average); //�ݿø��Լ� round()���
Copy link

Choose a reason for hiding this comment

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

p3. average변수가 한 번 쓰이고 마니, 바로 리턴에 넣어서 한 줄로 합치면 어떨까요?

Comment on lines +12 to +14
for (int i = 0; i < v.size(); i++) {
sum += v[i];
}
Copy link

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;

Copy link

Choose a reason for hiding this comment

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

슬랙에서 질문주셨을 때 제가 답변을 잘못 드렸던 걸 뒤늦게 확인했네요..죄송합니다😭

Comment on lines 21 to 23
int midindx; //�߾Ӱ��� �ġ�� �ε���
midindx = (v.size()-1) / 2; //���ʹ� �ε��� 0���� �����ϹǷ� v.size()-1�������
return v[midindx];
Copy link

Choose a reason for hiding this comment

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

p3. midindx가 한번 쓰이고 마니, 바로 인덱스에 넣어줘도 좋을 것 같아요!

Comment on lines 33 to 44
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�� �̵�
Copy link

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()); //������ ���
Copy link

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) {
Copy link

Choose a reason for hiding this comment

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

p2. 문제 조건에서 n이 홀수라고 주어졌으므로, 조건문을 쓸 필요가 없습니다.

Comment on lines +75 to +77
int k;
cin >> k;
vec[i] = k;
Copy link

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�������
Copy link

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
Copy link

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)를 보시면 됩니다😊

Comment on lines 14 to 21
int numOfTiles(int x, int y) {
int num;

//����+����-�ִ���� = �밢���� �׷��� Ÿ�� ����
num = x + y - gcdRecursion(max(x, y), min(x, y));

return num;
}

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
처럼 같은 결과가 나오게 됩니다! 나머지 연산의 특징에 대해서 한 번 생각해보시면 좋을 것 같네요~!

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.

5 participants