본문 바로가기

분류 전체보기411

[C] 백준 11650번 : 좌표 정렬하기 https://www.acmicpc.net/problem/11650 11650번: 좌표 정렬하기 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다. www.acmicpc.net 문제 접근 1. 구조체 배열에 값을 입력 받는다. 2. 합병정렬을 이용해서 정렬한다. 느낀점 처음에 쉘 정렬을 통해서 정렬해보려고 했지만 시간초과가 나서 좀 더 빠른 정렬 방법이 필요했다. C에서 지원하는 qsort를 사용해보려고 했지만 구조체를 통해서 구현했기 때문에 다소 어려워 시간이 걸렸다. 최후의 방법으로 합병 정렬을 통해서 구현했는데 .. 2021. 5. 16.
[C] 백준 1427번 : 소트인사이드 www.acmicpc.net/problem/1427 1427번: 소트인사이드 첫째 줄에 정렬하고자하는 수 N이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이다. www.acmicpc.net 문제 접근 10자리 숫자임으로 11크기의 char 배열을 만들어서 gets_s로 입력받고 내부에서 정렬을 한다음에 puts로 출력한다. 느낀점 제출할 때 계속 버전오류로 제출이 안되서 gets_s 말고 gets로 제출했다. 어떤 것으로 제출하는게 맞는지 아직까지도 모르겠다.. 코드 #include #include int main() { char n[11] = { NULL, }; gets_s(n, sizeof(n)); for (int i = 0; i < strlen(n) - 1;i++) { for (.. 2021. 5. 11.
[C] 백준 2108번 : 통계학 www.acmicpc.net/problem/2108 2108번: 통계학 첫째 줄에 수의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 단, N은 홀수이다. 그 다음 N개의 줄에는 정수들이 주어진다. 입력되는 정수의 절댓값은 4,000을 넘지 않는다. www.acmicpc.net 데이터 추가로 잘못된 풀이가 되었습니다 ㅠ.ㅠ https://codinghejow.tistory.com/176 여기에 좋은 풀이가 있습니다! 문제 접근 산술평균 : 값을 입력받을 때 변수 sum에 입력받은 값들을 다 더한 뒤, n만큼 나눠 출력한다. 이 때 소수점 첫째자리 반올림이니 0.f로 출력한다. 중간값 : 입력받는 값의 개수는 항상 홀수이므로, 정렬한 배열의 중간값을 출력한다. 이 때, 배열의 인덱스는 0부터 시작하니.. 2021. 5. 11.
[C] 백준 10989번 : 수 정렬하기3 www.acmicpc.net/problem/10989 10989번: 수 정렬하기 3 첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다. www.acmicpc.net 문제 접근 1. 숫자들을 n회 만큼 반복해서 받는데 배열의 저장된다. 2. 입력받은 숫자들은 배열의 인덱스로, 해당 인덱스의 값이 올라감은 그 인덱스(=숫자)가 반복회서 나타남을 말한다. 3. 배열에 저장된 값을 출력, 이 때 해당 인덱스의 값이 0이면 그 숫자가 나온 적이 없으므로 패스한다. 4. 값이 저장되어 있다면 값만큼 그 숫자(=인덱스)를 출력한다. 느낀점 처음에는 숫자의 범위를 생각하지 못하고 단순하게 정렬 알고리즘을.. 2021. 4. 29.
[C] 백준 2577번 : 숫자의 개수 www.acmicpc.net/problem/2577 2577번: 숫자의 개수 첫째 줄에 A, 둘째 줄에 B, 셋째 줄에 C가 주어진다. A, B, C는 모두 100보다 크거나 같고, 1,000보다 작은 자연수이다. www.acmicpc.net 문제 접근 1. 10칸의 배열을 생성하고 입력받은 값을 곱한 값을 저장한다. 2. 곱한 값을 10을 나눈 나머지에 해당하는 idx에 값을 상승시킨다. 3. 나눈 나머지가 0이 될 때까지 반복한다. 느낀점 실패한 문제로 남아서 풀어보았다. 매우 기본적인 문제다. 코드 #include int main() { int a, b, c; int arr[11] = { 0, }; scanf("%d %d %d", &a, &b, &c); int total = a * b * c; wh.. 2021. 4. 23.
[C] 백준 2751번 : 수 정렬하기 2 www.acmicpc.net/problem/2751 2751번: 수 정렬하기 2 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. www.acmicpc.net 문제 접근 1. 만들어둔 배열에 숫자를 입력 받는다. 2. 입력받은 값들을 잘게 자른다. 이 때, 재귀를 이용한다. 3. 값을 비교해서 작은 값 순서대로 새로운 배열에 담아둔다. 4. 값이 모두 정렬되면 기존의 배열에 새로 담는다. 느낀점 합병 정렬이라는 알고리즘을 수업시간에 배우긴 했지만 직접 코드를 구성하는건 이번이 처음이었다. 문제에서 너무 어려운 알고리즘이니 내장 정렬 함수를 사용하라곤 했지.. 2021. 4. 15.