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

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

[정렬] 9월 3일 #1

wants to merge 3 commits into from

Conversation

KangSYeon
Copy link
Contributor

정렬 선택 과제 제출합니다!
<기존 제출>
문제 번호 1026, 11651

1026번, 11651번 풀었습니다.
11651 수정해서 다시 올립니다!
1026, 11651 과제 수정하여 제출합니다.(전체 주석처리)
Copy link

@jk0527 jk0527 left a comment

Choose a reason for hiding this comment

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

P1. 1026 코드 리뷰 완료
버블 정렬 수업에서 다룬대로 잘 구현해 주셨습니다:) 다만 코멘트 남긴 것처럼
부등호의 방향을 이용하면 내림차순도 좀 더 간단하게 구현할 수 있습니다!!
그리고 정렬을 함수로 직접 구현하지 않고 sort 함수 사용하는 걸로 구현해보세요!
(sort 함수 사용 방법은 라이브 코딩 10825.cpp 참고해주세요!)
전역 변수 사용 지양도 신경 써주세요!
다른 부분은 다 좋습니다:)

수정하시고 저 불러주세요!

Comment on lines +43 to +44
BubbleSort(n);
advancedBubbleSort(n);
Copy link

Choose a reason for hiding this comment

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

이렇게 정렬을 구현해도 좋지만 C++의 algorithm 라이브러리에 있는 sort() 함수를 사용하는 연습을 해보셔도 좋을 것 같아요! 앞으로 sort함수를 쓸 일이 많을 것 같아서 이 문제부터 바꿔서 구현하는 연습을 해보면 좋을 것 같아요! sort함수로는 내림차순도 구현 가능합니다!! 따라서 sort함수를 이용하면 C 배열은 필요 없습니다!

Comment on lines +25 to +38
void BubbleSort(int n) {

for (int i = 0; i < n; i++) {
for (int j = i + 1; j < n; j++) {

if (arrB[i] > arrB[j]) {
arrC[i]--;
}
else {
arrC[j]--;
}
}
}
}
Copy link

Choose a reason for hiding this comment

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

버블 정렬을 사용할 때 내림차순으로 구현하고 싶으시면 일일히 비교해서 인덱스를 찾는 방법 말고 오름차순 정렬에서 부등호의 방향을 반대로 해주는 방법이 좀 더 간단할 거예요! 그러면 다른 배열(arrC)을 사용하지 않아도 됩니다!


using namespace std;

vector<int> arrA, arrB, arrC;
Copy link

Choose a reason for hiding this comment

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

저희가 클린 코드를 위해 전역 변수의 선언은 최대한 지양하고 있습니다! 함수 안에서 지역 변수로 선언하고 매개변수로 받는 형태로 구현 부탁드려요!

Copy link

@jaeseo222 jaeseo222 left a comment

Choose a reason for hiding this comment

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

P1. 11651 코드 리뷰 완료
안녕하세요 승연님 ☺️☺️ 코드를 깔끔하게 작성해주셔서 리뷰 드리기 너무 좋았습니다!
나중에, 코드가 길어졌을 땐 주석으로 보충 설명 해주셔도 좋을 것 같습니다. 🔥🔥

정말! 작고 소중한 실수가 있어서 코멘트 달았습니다. 백준에선 꼭 맞았습니다! 가 떠야 과제 제출 인정되니 꼭 수정 부탁 드립니다. 🥺
또한, 고려해주시면 좋을 부분들에 대해 코멘트 달았습니다. 편하게 확인 부탁 드립니다 !

p1 은 꼭 수정 부탁 드리며, p2 혹은 p3에 대해선 참고해주시고 수정해주셔도 좋을 것 같습니다!
수정하신 후 저 리뷰어로 불러주시기 바랍니다!
감사합니다 ☺️☺️


int main() {

//int n = 0;

Choose a reason for hiding this comment

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

p1. 주석 처리가 되었네요! 수정 부탁드려요!🤗

Comment on lines +11 to +12
vector<vector<int>> arr;
arr.assign(n, vector<int>(2, 0));

Choose a reason for hiding this comment

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

p2.

2차원 배열로 해결해주셨네요!! arr[i][1]arr[i][0]은 직관적인 변수명이 아니기에 간혹 헷갈릴 우려가 생기기도 하죠!
그렇다면, 2개의 변수를 한 번에 효율적으로 관리할 수 있는 방법은 없을까요?

  • 구조체라는 여러 자료형을 하나로 묶어 사용하는 사용자 정의 자료형이 있죠! x, y 처럼 직관적인 변수명으로 구조화해준다면 참조할 때 헷갈리지 않는다는 장점이 있겠습니다.
  • pair이라는 두 개의 자료형을 하나로 묶어서 사용할 수 있는 Container도 있습니다. 😄
    pair은 벡터에 자료형으로 선언하여 2차원 배열처럼 사용하기도 하고, 현재 문제처럼 좌표계를 표현할 때 사용하기도 합니다. 아래 사용 방법 블로그를 첨부합니다!

📌 pair 사용 방법

두 자료형을 하나로 묶어 사용할 때 구조체 vs pair 둘 중 편한 걸로 사용해주시면 되며, 보통 코테에선 변수명을 선언해주지 않아도 되는 pair 을 많이 사용합니다!

🔥🔥 그럼, pairsort 했을 땐 두 자료형 중 어느 것을 기준으로 정렬될까요? 이를 고려하여 비교 함수를 구현해주시면 좋을 것 같습니다.

Choose a reason for hiding this comment

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

📌 배열을 사용하실 때 고려해주시면 좋을 부분들을 남길게요!
선언과 동시에 초기화해주는 것은 가독성 면에서도 좋고, 무엇보다 편하기에 권장 드리는 부분입니다. ☺️ (권장일 뿐이지, 본인의 자유입니다!!)

보통, 다음과 같은 상황이 주어질 때가 많습니다. 어떻게 선언하는 게 편할 지 예상해볼까요!

지금처럼 row와 column의 크기가 정해져 있을 때

vector<vector<int>> arr(n, vector<int>(m, 0));

row 크기만 정해져 있고, column의 크기는 모를 때

vector<vector<int>> arr(n);

vector<vector<int>> arr;
arr.assign(n, vector<int>(2, 0));
그럼 위 해당 코드는 어떻게 선언할 수 있을까요? 권장 드리는 코드입니다!

vector<vector<int>> arr(n, vector<int>(2, 0));

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