백준(C언어)/22년 10월7 10월 24일(월) - 정렬(18870번 *풀이진행중) 정렬 - 18870번https://www.acmicpc.net/problem/18870 18870번: 좌표 압축 수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다. Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표의 개수와 같아야 한다. X1, X2, ..., XN에 좌 www.acmicpc.net 문제점 풀이 2022. 10. 24. 10월 13일(목) - 정렬(10814번 *복습필요) 정렬 - 10814번 10814번: 나이순 정렬 온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 www.acmicpc.net 문제점 1. 12일날 풀이처럼 merge sort를 활용해서는 제대로된 풀이가 불가능한 상황 -> 브루트포스 알고리즘 형태의 풀이라는 것을 찾아냈다 -> 단계별로 풀이하고 있기 때문에, 추후에 브루트포스 쪽 풀이를 하고나서 다시 코드를 확인해야할 것 같다 -> 다만 정렬을 사용하지 않았기 때문에, quick sort를 이용한 풀이도 해보아야할 것 같다 풀이 - 1 (브루트포스 알고리즘처럼 풀이) (출처 - https://solution-is-her.. 2022. 10. 13. 10월 12일(수) - 정렬(10814번 *풀이진행중) 정렬 - 10814번 10814번: 나이순 정렬 온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 www.acmicpc.net 문제점 1. stable sort 를 활용하라는 뜻이라서 merge sort를 활용해서 풀이를 진행했다 -> "틀렸습니다"만이 나오면서 merge sort를 활용하는 것에 대한 의문이 생김 2. 1차풀이 (이전 문제들처럼 merge sort를 활용해서 풀이했으나, "틀렸습니다"만이 나옴) #define _CRT_SECURE_NO_WARNINGS #pragma warning(disable: 4996) #include #include typedef s.. 2022. 10. 12. 10월 11일(화) - 정렬(1181번) 정렬 - 1181번 1181번: 단어 정렬 첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다. www.acmicpc.net 문제점 1. 중복을 제외하는 출력은 main에서 구현하고자 했으나, 각각의 word[50]을 하나하나 비교하는 것은 너무 복잡할 것 같다는 문제가 발생 -> string.h 에서의 strcmp 함수가 있었다는 것을 검색을 통해서 다시 기억해낸 이후, strcmp != 0 을 통해 중복제외한 출력을 구현 2. 사전 순서대로의 출력도 main에서 구현하고자 했었으나, for문 안에서 동시에 구현하기에는 너무 복잡해지는 문제가 발생 ->.. 2022. 10. 11. 10월 10일(월) - 정렬 (1181번 *풀이진행중) 정렬 - 1181번 1181번: 단어 정렬 첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다. www.acmicpc.net 문제점 1. merge sort 말고는 다른 방법은 비효율적 일 것 같지만, 어찌 적용해야할지 감이 잘 안잡힌다... 풀이 #define _CRT_SECURE_NO_WARNINGS #pragma warning(disable: 4996) #include #include typedef struct { char word[50]; int length; }array; void merge(dot* list, int left, int mid, .. 2022. 10. 10. 10월 6일(목) - 정렬(11651번) 정렬 - 11651번 11651번: 좌표 정렬하기 2 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다. www.acmicpc.net 문제점 x 풀이 (11650번에서 void merge 부분의 .x와 .y 순서만 바꾸어서 해결) #define _CRT_SECURE_NO_WARNINGS #pragma warning(disable: 4996) #include #include typedef struct dot{ int x; int y; }dot; dot list[100000]; dot sorted[100000]; void.. 2022. 10. 6. 10월 5일(수) - 정렬(11650번) 정렬 - 11650번 11650번: 좌표 정렬하기 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다. www.acmicpc.net 문제점 1. 아직까지 알고있던 merge sort는 list[i/j/k].x 만을 활용하는 경우였고, 이번 문제는 list[i/j/k].y 까지 활용해야했다 -> 결국 참조에 있는 코드를 참고하여 풀이했다 -> 아직 merge sort 코드에 대한 확실한 이해가 부족하기 때문에 코드를 추가하는 과정에서 여러번 실패했었다 -> 따라서 merge sort에 대한 추가적인 공부가 필요할 것 같다.. 2022. 10. 5. 이전 1 다음