본문 바로가기

반응형

PS/백준

(318)
[BOJ] 백준 2108 통계학 (Swift) 문제 https://www.acmicpc.net/problem/2108 2108번: 통계학 첫째 줄에 수의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 단, N은 홀수이다. 그 다음 N개의 줄에는 정수들이 주어진다. 입력되는 정수의 절댓값은 4,000을 넘지 않는다. www.acmicpc.net 풀이 수를 입력받아서 산술평균, 중앙값, 최빈값, 범위를 구하는 문제입니다. 먼저 입력받은 수를 Int 배열에 넣어주겠습니다. 가장 먼저, 산술평균을 구해봅시다. 산술평균은 N개의 수들의 합을 N으로 나눈 값 이고, 소수점 이하 첫째 자리에서 반올림한 값을 출력해주어야 합니다. Int 배열에 넣어줬기 때문에 합을 N으로 나눈다면 반올림한 값을 구할 수 없을 것입니다. 고차함수 map을 사용해 Double ..
[BOJ] 백준 10989 수 정렬하기 3 (Swift) 문제 https://www.acmicpc.net/problem/10989 10989번: 수 정렬하기 3 첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다. www.acmicpc.net 풀이 수가 최대 10,000,000개가 등장할 수 있습니다. 이는 $O(n)$, $O(n\log{n})$의 시간복잡도가 걸리는 정렬로는 풀이할 수 없습니다. 이 수는 10,00보다 작거나 같은 자연수라는 것에 힌트를 얻어 counting 정렬을 사용할 수 있습니다. Swift에서는 입력(readLine)과 출력(print)이 백준에서 다른 언어에 비해 많이 느립니다. 출력을 문자열에 계속해서 더해주어 한 번만 ..
[BOJ] 백준 2571 수 정렬하기 2 (Swift) 문제 https://www.acmicpc.net/problem/2751 2751번: 수 정렬하기 2 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. www.acmicpc.net 풀이 https://www.acmicpc.net/problem/2750 2750번: 수 정렬하기 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. www.acmicpc.net 위 문제와 동일한 문제입니다. (단순히 N의 최대값이 1,000,000)..
[BOJ] 백준 25305 커트라인 (Swift) 문제 https://www.acmicpc.net/problem/25305 25305번: 커트라인 시험 응시자들 가운데 1등은 100점, 2등은 98점, 3등은 93점이다. 2등까지 상을 받으므로 커트라인은 98점이다. www.acmicpc.net 풀이 k등의 점수가 커트라인 이므로, k등의 점수를 출력해주면 되는 문제입니다. 점수들을 입력받고 내림차순으로 정렬한 후, k-1번 인덱스의 요소를 출력해주면 되는 문제입니다. 소스코드 후기 정렬만 해주면 쉽게 풀 수 있는 문제입니다.
[BOJ] 백준 2587 대표값2 (Swift) 문제 https://www.acmicpc.net/problem/2587 2587번: 대표값2 어떤 수들이 있을 때, 그 수들을 대표하는 값으로 가장 흔하게 쓰이는 것은 평균이다. 평균은 주어진 모든 수의 합을 수의 개수로 나눈 것이다. 예를 들어 10, 40, 30, 60, 30의 평균은 (10 + 40 + 30 + 60 + www.acmicpc.net 풀이 평균은 입력받은 수들의 합 / 5 입니다. 중앙값은 입력받은 수를 정렬 한 후, 2번 인덱스가 중앙값 입니다. 이것을 출력만 해주면 되는 문제입니다. 소스코드 후기 고차함수 reduce를 사용해 배열의 합을 구할 수 있습니다. 중앙값을 구하기 위해서는 자연수가 총 5개이므로 배열에 넣어주고 정렬해준 후, 2번 인덱스에 있는 요소를 출력하면 됩니다.
[BOJ] 백준 2750 수 정렬하기 (Swift) 문제 https://www.acmicpc.net/problem/2750 2750번: 수 정렬하기 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. www.acmicpc.net 풀이 Array에 내장된 sort 혹은 sorted 메서드를 사용해 풀 수 있는 문제입니다. 소스코드 후기 직접 정렬을 구현하는 방법도 있겠지만, 내장함수를 쓰면 쉽게 풀 수 있는 문제입니다.
[BOJ] 백준 24313 알고리즘 수업 - 점근적 표기 1 (Swift) 문제 https://www.acmicpc.net/problem/24313 24313번: 알고리즘 수업 - 점근적 표기 1 f(n) = 7n + 7, g(n) = n, c = 8, n0 = 1이다. f(1) = 14, c × g(1) = 8이므로 O(n) 정의를 만족하지 못한다. www.acmicpc.net 풀이 조건을 잘 확인해보고, 예제 입력을 보면 $O(n)$을 만족시키는 조건을 찾을 수 있습니다. 첫 번재 줄에서, $a_1 * n + a_0$ 가 $f(n)$ 입니다. 두 번째 줄에서, $c$ 세 번째 줄에서 $n_0$를 입력 받고, $c * n$ 이 $g(n)$ 입니다. 그렇다면, $a_1 * n + a_0 \le c * n$에서 $n_0$를 대입해서 확인해보면 되겠죠? 하지만, 한가지 조건이 더 ..
[BOJ] 백준 24267 알고리즘 수업 - 알고리즘의 수행 시간 6 (Swift) 문제 https://www.acmicpc.net/problem/24267 24267번: 알고리즘 수업 - 알고리즘의 수행 시간 6 오늘도 서준이는 알고리즘의 수행시간 수업 조교를 하고 있다. 아빠가 수업한 내용을 학생들이 잘 이해했는지 문제를 통해서 확인해보자. 입력의 크기 n이 주어지면 MenOfPassion 알고리즘 수행 시 www.acmicpc.net 풀이 문제의 알고리즘은 n에 영향을 받아, 중첩된 for문이 약 $n^3$번 실행됩니다. 빅오 표기법으로 $O(n^3)$ 입니다. 수행 횟수는 어떻게 될까요? 7을 예시로 들어보겠습니다. 첫 번째 for문은 1, 2, 3, 4, 5 까지 실행이 되겠네요. 첫 번째 for문이 1일 때, 두 번째 for문은 2, 3, 4, 5, 6 까지 실행이 됩니다. ..

반응형