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월 6일 #3

Open
wants to merge 2 commits into
base: main
Choose a base branch
from
Open

[ 정수론 ] 9월 6일 #3

wants to merge 2 commits into from

Conversation

sari-harin
Copy link
Collaborator

@sari-harin sari-harin commented Sep 6, 2023

인적사항

학번: 2071079
이름: 이하린

과제제출

기존 제출: 1735, 2840
추가 제출: 6588

Copy link

@kimhj010502 kimhj010502 left a comment

Choose a reason for hiding this comment

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

[정수론 구현 문제 코드 리뷰 완료]

2840(P2)

하린님 안녕하세요!
과제하시느라 수고 많으셨습니다!! 어려운 문제인데도 잘 풀어주셨네요! 🥰
코드에 대한 간단한 주석이 있으면 더 좋을 것 같아요. 😎
몇 가지 사소한 코멘트 드렸습니다.
궁금한 점이 있으면 리뷰어를 호출해주세요!


using namespace std;

int main()

Choose a reason for hiding this comment

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

P2. main 함수에서는 입출력만 하고 추가적인 연산은 따로 함수로 작성해주는게 좋아요!

Comment on lines +19 to +20
int turns;
char c;

Choose a reason for hiding this comment

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

for문 안에서 변수를 정의하면 반복문을 돌때마다 새로 할당해주게 돼요! 반복문 밖에서 한번만 정의해준 후 값만 바꿔주는 게 좋습니다~

Comment on lines +24 to +28
if(i==0){
pt=i;
arr[i]=c;
continue;
}

Choose a reason for hiding this comment

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

첫 번째 경우는 무조건 넣을 수 있으니까 예외처리해준 거 좋아요! 다만 for문을 돌때마다 i가 0인지 검사하게 되니까 n이 커지면 시간복잡도 측면에서 비효율적인 코드가 될 수 있어요! 차라리 for문 바깥에서 i가 0일 때의 경우를 처리해주고 for문을 1부터 실행하는 게 어떨까요? 아니면 굳이 검사하지 않아도 괜찮아요!

continue;
}

pt=(pt+turns)%n;

Choose a reason for hiding this comment

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

화살표의 위치를 옮겨주는 과정을 잘 구현해주셨네요! 👍

Comment on lines +35 to +37
else{
arr[pt]=c;
}

Choose a reason for hiding this comment

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

위의 if문에서 return으로 함수를 종료시켰기 때문에 else라고 따로 작성해 줄 필요가 없어요! else를 쓰지 않으면 더 가독성 있는 코드가 됩니다!

Comment on lines +41 to +48
for(int i=0;i<n;i++){
for(int j=i+1;j<n;j++){
if(arr[i]!='?' && arr[i]==arr[j]){
cout << "!";
return 0;
}
}
}

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 +53 to +55
if(pt<0){
pt=n-1;
}

Choose a reason for hiding this comment

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

P2. 이렇게 구현하면 매번 pt가 0보다 작은지 검사하게 되네요! 해당 조건문을 통과하는 경우는 최대 1번밖에 없으니 비효율적인 코드가 될 수 있을 것 같아요 for 문에서 i가 항상 양수가 되도록 범위를 설정해보는 것이 어떨까요?

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.

[정수론 알고리즘 코드 리뷰 완료]
안녕하세요 하린님~ 정수론 필수 알고리즘 문제 코드리뷰와 추가제출 확인 완료되셨습니다! 수고 많으셨습니다~

tmp = a % b;
a = b;
b = tmp;
}

Choose a reason for hiding this comment

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

유클리드 호제법을 반복문으로 구현해주셨네요! 잊지 않고 swap해주시는 것까지 아주 좋습니다!

int gcd_c = getGcd(c1,c2);

c1/=gcd_c;
c2/=gcd_c;

Choose a reason for hiding this comment

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

통분하고 약분해주는 과정도 깔끔하네요👍👍

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