본문 바로가기

반응형

시간복잡도

(4)
[Swift] 백준 문제를 풀면서 겪은 시간초과 유형 #1. 빠른 입출력 먼저, 백준에서 readLine, print 메서드가 다른 언어에서 보다 느리다. 입력은 라이노님이 fread 방식을 swift 버전으로 작성한 코드로 해결할 수 있음. 출력 같은 경우에는 print를 여러번 호출하는 것 보다, string 변수에 저장하고, 한 번에 출력하는 것이 더 빠름 예를 들어, 1 2 3 ... 100,000 을 호출한다고 할 때 print(1) print(2) print(3) ... print(100_000) 보다 var str = "" str += "1\n" str += "2\n" str += "3\n" ... str += "100000\n" print(str) 이 더 빠르다. #2. 메서드, 프로퍼티의 시간 복잡도를 알고 풀자. Swift에서 제공하는 몇..
[BOJ] 백준 24263 알고리즘 수업 - 알고리즘의 수행 시간 2 (Swift) 문제 https://www.acmicpc.net/problem/24263 24263번: 알고리즘 수업 - 알고리즘의 수행 시간 2 오늘도 서준이는 알고리즘의 수행시간 수업 조교를 하고 있다. 아빠가 수업한 내용을 학생들이 잘 이해했는지 문제를 통해서 확인해보자. 입력의 크기 n이 주어지면 MenOfPassion 알고리즘 수행 시 www.acmicpc.net 풀이 문제의 알고리즘은 n에 따라서 for문이 n번 실행되므로, 빅오 표기법으로 $O(n)$ 입니다. 따라서 수행횟수는 n번, 최고차항의 차수는 1 입니다. ($n^1$) 소스코드 후기 시간복잡도를 계산하는 방법에 대해 안다면 쉽게 풀 수 있는 문제입니다.
[BOJ] 백준 24262 알고리즘 수업 - 알고리즘의 수행 시간 1 (Swift) 문제 https://www.acmicpc.net/problem/24262 24262번: 알고리즘 수업 - 알고리즘의 수행 시간 1 오늘도 서준이는 알고리즘의 수행시간 수업 조교를 하고 있다. 아빠가 수업한 내용을 학생들이 잘 이해했는지 문제를 통해서 확인해보자. 입력의 크기 n이 주어지면 MenOfPassion 알고리즘 수행 시 www.acmicpc.net 풀이 문제에 주어진 알고리즘의 수행시간은 빅오 표기법으로 $O(1)$ 입니다. n에 따라 수행시간이 전혀 변화가 없습니다. 따라서 수행횟수는 1 최고차항의 차수는 n이 존재하지 않기 때문에 0 입니다. 소스코드 후기 시간복잡도를 계산하는 방법을 알면 아주 쉬운 문제입니다.
[알고리즘] 간단한 소수 판별 알고리즘 (Swift) 소수 소수(Prime Number)는 1보다 큰 자연수 중 1과 자기 자신만을 약수로 가지는 수 입니다. 간단한 소수 판별 알고리즘 그렇다면 해당 수가 소수인지 아닌지 어떻게 판별할까요? 아주 간단한 방식으로 소수인지 판별할 수 있습니다. 단순히 2부터 자기 자신의 수 - 1 까지의 수 중에서 나누었을 때, 나머지가 0이 되는 수가 하나라도 존재하면 소수가 아닙니다. 이 방식의 경우 시간 복잡도는 $O(n)$이 될 것입니다. 시간 복잡도를 줄일 수 있는 방법이 있을까요?? 개선된 소수 판별 알고리즘 X를 2로 나누었을 때, 나머지가 0이라면 2는 X의 약수입니다. 그렇다면 X는 절대로 소수가 될 수 없겠죠? X를 2로 나누었을 때, 몫 도 X의 약수 입니다. 이러한 성질을 이용해서 시간 복잡도를 줄일 수..

반응형