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일 #2

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
66 changes: 66 additions & 0 deletions 1213.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
#include <iostream>;
#include <string>;

Choose a reason for hiding this comment

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

p3. #include <-->;처럼 include 뒤에는 ';'를 붙이지 않으셔도 괜찮습니다! (';'을 붙이시면 경고가 발생하네요)


using namespace std;



int main() {

int arr[26] = { 0 };

string str;
cin >> str;

for (int i = 0; i < str.length(); i++) {
int index = str[i] - 65;
arr[index]++;

Choose a reason for hiding this comment

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

p3. 'A'의 아스키코드가 65라는 것을 활용해서 인덱스를 지정해주신 것 너무 좋습니다👍👍 직접 'A'의 아스키코드를 찾아서 65라는 숫자로 코드를 작성해주셔도 좋지만, str[i]-'A'로 작성하셔도 전혀 문제가 발생하지 않습니다!

}


int odd = 0;
int odd_index;

Choose a reason for hiding this comment

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

p2. odd_index가 사용되고 있지 않습니다! 밑에서 odd의 개수를 세서 홀수 개수가 1개보다 많을 때를 if문으로 분류해주고 계신데 홀수 개수를 세는 부분에서 odd를 홀수 개수가 아니라 홀수 개인 알파벳으로 설정해주시면 추후에 if문 없이 한번에 홀수 개인 알파벳이 1개보다 많을 때를 구별해볼 수 있으실 것 같습니다😊

string sol = "";
bool flag = false;

// Ȧ�� ���� ����
for (int i = 0; i < 26; i++) {
if (arr[i] % 2 != 0)
odd++;
}

// Ȧ���� 1�� �̻��̸� ����
if (odd > 1) {
cout << "I'm Sorry Hansoo";
}

else {

Choose a reason for hiding this comment

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

p3. if로 홀수가 1개 이상일 때와 아닐 때의 코드를 나눠서 작성해주셨는데요! odd가 1보다 클 때를 if문으로 감싸서 cout 해주신 뒤 return을 해주시면 else를 사용하지 않고도 코드가 문제 없이 돌아갈 것 같네요:)
return을 잘 활용해주시면 인덴테이션도 줄여서 훨씬 더 깔끔하게 코드를 구현하실 수 있으실 거예요😁

for (int i = 0; i < 26; i++) {
if (arr[i] % 2 != 0) {
odd_index == i;
flag = true;

Choose a reason for hiding this comment

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

p2. flag가 이후에 사용되고 있지 않습니다! 백준에서 코드를 돌려보시고 작성하신 코드를 확인해보시면 코드를 실행하면서 발생하는 경고를 확인해보실 수 있을 거예요:) 이렇게 이후에 활용되지 않는 변수는 삭제해주시면 메모리 관리도 할 수 있으니 유의해주시면 좋을 것 같습니다!

}

}

for (int i = 0; i < 26; i++) {
for (int j = 0; j < arr[i] / 2; j++) {
sol += i + 'A';
}
}

for (int i = 0; i < 26; i++)
if (arr[i] % 2)
sol += i + 'A';

Choose a reason for hiding this comment

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

p1. 위에서 odd로 가운데에 올 문자를 지정할 수 있는 방법에 대해서 남겨드렸습니다! 이 방법을 활용하면 해주셨으니 굳이 같은 의미를 가지는 for문을 2번씩 돌면서 가운데에 올 문자를 찾지 않아도 될 것 같습니다😊



for (int i = 25; i >= 0; i--) {
for (int j = 0; j < arr[i] / 2; j++) {
sol += i + 'A';
}
}
}

Choose a reason for hiding this comment

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

p2. 저희 튜터링에서는 클린코드 작성을 위해 입출력을 제외한 로직 부분은 함수화하는 것을 장려하고 있습니다! 팰린드롬을 생성하는 부분을 함수로 작성해보시면 좋을 것 같네요:)


cout << sol;
return 0;
}
30 changes: 30 additions & 0 deletions 14490.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
#include <iostream>
#include <string>
#include <sstream>

using namespace std;

// ��Ŭ���� ȣ����
int gcdRecursion(int a, int b) {
// a > b �� ��, a�� b�� �ִ������� ����
if (b == 0) {
return a;
}
return gcdRecursion(b, a % b);
}


int main() {
string str;
cin >> str;

string str1 = str.substr(0, str.find(':'));
string str2 = str.substr(str.find(':') + 1);

int n = stoi(str1);
int m = stoi(str2);

int gcd = gcdRecursion(n, m);
cout << n / gcd << ":" << m / gcd;
return 0;
}
63 changes: 63 additions & 0 deletions 2108.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
#include <iostream>
#include <vector>
#include <algorithm>
#include <math.h>

using namespace std;

int main() {
int count;
cin >> count;

int sum = 0;
Copy link

Choose a reason for hiding this comment

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

p3. sum을 double로 선언하면, 뒤에서 형변환을 거칠 필요가 없어져요!
(자료형을 섞어서 연산을 하면 컴파일러에서 암시적 형 변환을 해줍니다)


vector<int> v;
int arr[8001] = { 0 };

for (int i = 0; i < count; i++) {
int n;
cin >> n;
sum += n;
v.push_back(n);
arr[n+4000]++;
Copy link

Choose a reason for hiding this comment

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

p3. 4000이 문제에서 주어지는 숫자 범위이니, 상수로 선언하고 사용하시면 더 편할거에요!


}

// ��� - �Ҽ��� ���� ù���ڸ� �ݿø�
Copy link

Choose a reason for hiding this comment

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

제출하시면서 주석이 깨진 것 같아요! 확인부탁드립니다

double avg = ((double)sum) / count;
avg = round(avg);
if (avg == -0) {
avg = 0;
}
cout << avg << "\n";

// �߾Ӱ�
sort(v.begin(), v.end());
int med = v.at(v.size() / 2);
cout << med << "\n";
Comment on lines +36 to +37
Copy link

Choose a reason for hiding this comment

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

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


// �ֺ�
int stop = 0;
int com;
int common_value = 0;
for (int i = 0; i < 8001; i++) {
if (arr[i] > common_value) {
common_value = arr[i];
}
}
for (int i = 0; i < 8001; i++) {
if (arr[i] == common_value) {
com = i-4000;
stop++;
}
if (stop == 2) {
break;
}
}
Comment on lines +40 to +56
Copy link

Choose a reason for hiding this comment

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

p3. 너무 잘 구현해주셨어요!
재사용성을 위해, 최빈값 구하는 부분은 함수화하는게 어떨까요?

cout << com << "\n";

// ����
int rng = v.back() - v.front();
cout << rng;
Comment on lines +60 to +61
Copy link

Choose a reason for hiding this comment

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

p3. rng가 한 번 쓰이고 마니, 바로 리턴에 넣어서 한 줄로 합쳐도 될 것 같아요!

return 0;
}
26 changes: 26 additions & 0 deletions 2168.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
#include <iostream>

using namespace std;


// ��Ŭ���� ȣ����
int gcdRecursion(int x, int y) {
// a > b �� ��, a�� b�� �ִ������� ����
if (y == 0) {
return x;
}
return gcdRecursion(y, x % y);
}

int main() {
// �Է�
int x, y;
cin >> x >> y;

// x�� y�� �ִ����� ���ϱ�
int gcd = gcdRecursion(x, y);

cout << x + y - gcd;
Comment on lines +21 to +23

Choose a reason for hiding this comment

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

p3.
gcd 변수는 함수의 값만 return 받고 출력하는 기능만 하기에 변수 선언을 해주지 않고 바로 출력문에 병합하여 작성할 수 있을 것 같아 보이네요~~!


return 0;
}