Go Lang/Algorithm

개요 https://www.acmicpc.net/problem/7489 생각을 잘못해서 몇 번 틀린 문제입니다. 간단하게 팩토리얼 수에서 최우측의 0이 아닌 값을 출력하면 되는 문제인데 아 10보다 큰수는 10의 나머지로 계산하면 더 계산이 빨라지겠구나라는 생각을 하여 아래 코드를 넣은 게 실수였습니다. 왜냐하면 25같이 특정 수와 만나면 10의 제곱이 되는 수가 존재하기 때문에 함부로 나머지 연산을 사용하면 안되는 거였죠 if result > 10 { result = result % 10 } 코드 위와 비슷한 코드가 들어갑니다. 문제에서 언급했듯이 70!은 부동 소수점 변수의 위치까지 넘어가는 매우 큰 수 이므로 이를 처리해야 하는 코드가 필요합니다. 그래서 아래 코드를 넣었습니다, 이 코드도 수가 더..
개요 https://www.acmicpc.net/problem/1920 해당 문제는 5년 전 고등학생때 했었던 문제입니다. 하도 풀어도 시간초과가 발생해서 포기했던 기억이 나네요. 어떻게 하면 M개의 난수가 A배열에 있는 지를 찾는지가 관건인 문제였습니다. 지금 보니 시간 복잡도를 조금만 줄이면 되는 문제로 이진 탐색으로 해결했습니다. 이진 탐색 알고리즘 알고리즘을 배우면 가장 먼저 배우는 알고리즘으로 작년에 다시 시도했을 때도 알고 있던 알고리즘이었습니다. 이를 적용할 생각이 없던 게 아쉽네요 정의는 아래 그림으로 보시면 이해하는 것이 편할 겁니다. 위하고 문제의 다른 점은 어떤 수들이 오는지 모르고 정렬되지 않고 입력된다는 점입니다. 탐색하면서 절반 씩 범위를 줄이기 때문에 시간 복잡도는 O(logN..
https://www.acmicpc.net/problem/1929 1929번: 소수 구하기 첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다. www.acmicpc.net 위 문제는 소수 구할 때 자주 쓰이는 알고리즘인 에라토스테네스의 체를 사용하면 됩니다. 에라토스테네스의 체에 대한 설명은 나무 위키가 역시.. 잘 나와있습니다 https://namu.wiki/w/%EC%97%90%EB%9D%BC%ED%86%A0%EC%8A%A4%ED%85%8C%EB%84%A4%EC%8A%A4%EC%9D%98%20%EC%B2%B4 과정 또한 예시가 있으므로 이해가 쉬우실 것입니다. 수열에서 소수의 배수들을 전부 제..
백준 사이트의 1003번의 문제는 문제에서 보여주는 피보나치 함수를 사용하면 100% 시간 초과가 날것입니다. 시간이 초과되는 이유는 재귀함수의 사용이라는 것은 대부분 감이 오실 것입니다. 하지만 재귀 없이 피보나치 만들기는 처음에는 당황스럽지만 재귀를 배열로 표현한다고 생각하시면 쉽게 이해하실 것입니다. 위 문제에서 fibonacci(3), fibonacci(2), fibonacci(1)를 배열로 생각해봅시다. 그러면 아래와 같은 코드로 표현이 가능해집니다. package main import ( "bufio" "fmt" "os" ) func main() { // cmd로 입력받기 위한 bufio 선언 reader := bufio.NewReader(os.Stdin) writer := bufio.NewW..
DSeung
'Go Lang/Algorithm' 카테고리의 글 목록 (2 Page)