sort
-
사실 이 문제를 잘못 독해해서 시간이 엄청 걸렸다.. 문제에서 다른 노선에 포함 되어있는 것을 지운다고 하였는데, 이 의미를 잘못 이해하였다. 접근 방법은 다음과 같다. 1. 제일 긴 노선을 찾는다. 2. 제일 긴 노선의 출발점을 원점으로 변경한다. (기준점 설정) 3. 출발이 빠른 순으로 정렬한다. 4. 노선들을 순차적으로 방문하되, 이전 도착점보다 도착점이 더 먼 경우에만 해당 노선을 남겨둔다. (그렇지 않으면 이전 노선에 포함된다는 의미이므로 지워도 무방하다.) 추가적으로 원형 노선에 대해서 살펴볼 필요성이 존재한다. 원형 노선의 경우, 강제로 직선 노선으로 변경해주면 된다. 예를 들어 N이 10이고 (5, 2)의 경우에는 강제로 (5, 12)로 만들어주면 직선 노선화시킬 수 있다. 이 문제에서는 ..
[백준 10165번] [그리디] 버스 노선사실 이 문제를 잘못 독해해서 시간이 엄청 걸렸다.. 문제에서 다른 노선에 포함 되어있는 것을 지운다고 하였는데, 이 의미를 잘못 이해하였다. 접근 방법은 다음과 같다. 1. 제일 긴 노선을 찾는다. 2. 제일 긴 노선의 출발점을 원점으로 변경한다. (기준점 설정) 3. 출발이 빠른 순으로 정렬한다. 4. 노선들을 순차적으로 방문하되, 이전 도착점보다 도착점이 더 먼 경우에만 해당 노선을 남겨둔다. (그렇지 않으면 이전 노선에 포함된다는 의미이므로 지워도 무방하다.) 추가적으로 원형 노선에 대해서 살펴볼 필요성이 존재한다. 원형 노선의 경우, 강제로 직선 노선으로 변경해주면 된다. 예를 들어 N이 10이고 (5, 2)의 경우에는 강제로 (5, 12)로 만들어주면 직선 노선화시킬 수 있다. 이 문제에서는 ..
2021.01.20 -
방법론 자체는 11651번과 완전하게 동일하다. 다만, x가 증가하는 것이 먼저 고려되어야 한다는 것을 이용하여 compare함수만 수정해주면 된다. 해당하는 알고리즘을 활용하여 코드를 작성하면 다음과 같다. #include #include #include #include #include using namespace std; typedef struct{ int x; int y; }point; bool compare(const point value1, const point value2){ if (value1.x == value2.x){ return value1.y ..
[백준 11650번] [정렬] [Compare 함수] 좌표 정렬하기 2방법론 자체는 11651번과 완전하게 동일하다. 다만, x가 증가하는 것이 먼저 고려되어야 한다는 것을 이용하여 compare함수만 수정해주면 된다. 해당하는 알고리즘을 활용하여 코드를 작성하면 다음과 같다. #include #include #include #include #include using namespace std; typedef struct{ int x; int y; }point; bool compare(const point value1, const point value2){ if (value1.x == value2.x){ return value1.y ..
2020.09.16 -
이 문제는 x,y좌표를 제시하고 있으므로 x와 y를 저장하는 구조체를 만든뒤 sorting하면 된다. 단, 구조체를 정렬하는 방식에 대해서는 정의되어 있지 않으므로 따로 compare함수를 정의하여 처리해주어야 한다. 위의 내용을 활용하여 코드를 작성하면 다음과 같다. #include #include #include #include #include using namespace std; typedef struct{ int x; int y; }point; bool compare(const point value1, const point value2){ if (value1.y == value2.y){ return value1.x < value2.x; } else{ return value1.y < value2.y..
[백준 11651번] [정렬] [Compare 함수] 좌표 정렬하기 2이 문제는 x,y좌표를 제시하고 있으므로 x와 y를 저장하는 구조체를 만든뒤 sorting하면 된다. 단, 구조체를 정렬하는 방식에 대해서는 정의되어 있지 않으므로 따로 compare함수를 정의하여 처리해주어야 한다. 위의 내용을 활용하여 코드를 작성하면 다음과 같다. #include #include #include #include #include using namespace std; typedef struct{ int x; int y; }point; bool compare(const point value1, const point value2){ if (value1.y == value2.y){ return value1.x < value2.x; } else{ return value1.y < value2.y..
2020.09.16 -
python의 경우에는 바로 sort함수를 쓸 수 있는 것과 달리 (Built in function이므로) c++의 경우에는 sort함수가 algorithm 헤더 안에 속해 있으므로 이를 사용하기 위해서는 초반부에 반드시 algorithm을 선언해주어야 한다. 위 함수에서의 인자는 다음과 같다. sort(시작지점의 주소, 끝나는 지점의 주소, (정렬의 기준)) 예를 들어 5칸짜리 int형 배열 test을 첫번째에서 3번째 인자만 정렬하고 싶다면 sort(test, test + 3)를 해주면 된다. 단, 끝나는 지점은 열린구간이므로 그 주소는 포함하지 않는다. 마지막 인자인 정렬의 기준의 경우에는 반드시 포함될 필요는 없으나, 일반적인 기준인 오름차순으로 정렬하지 않는다면 삽입해주어야 한다. 이를 위해서는..
[c++] Sort 함수를 활용하여 정렬하기python의 경우에는 바로 sort함수를 쓸 수 있는 것과 달리 (Built in function이므로) c++의 경우에는 sort함수가 algorithm 헤더 안에 속해 있으므로 이를 사용하기 위해서는 초반부에 반드시 algorithm을 선언해주어야 한다. 위 함수에서의 인자는 다음과 같다. sort(시작지점의 주소, 끝나는 지점의 주소, (정렬의 기준)) 예를 들어 5칸짜리 int형 배열 test을 첫번째에서 3번째 인자만 정렬하고 싶다면 sort(test, test + 3)를 해주면 된다. 단, 끝나는 지점은 열린구간이므로 그 주소는 포함하지 않는다. 마지막 인자인 정렬의 기준의 경우에는 반드시 포함될 필요는 없으나, 일반적인 기준인 오름차순으로 정렬하지 않는다면 삽입해주어야 한다. 이를 위해서는..
2020.09.05