[ 백준 2635번 ] 수 이어가기
·
Algorithm/문제풀이
1. 문제2635번 - 수 이어가기 2. 풀이수열의 전체 길이를 결정짓는 것은 두 번 째 항으로, 입력받은 첫 번째 수 N 만큼만 순회하면 되는 문제이다.N의 최대값은 30,000이므로 제한 시간 내에 풀이하는데는 문제 없으며, 가장 긴 수열을 찾았을 때 어차피 O(N)의 시간복잡도이므로 별도의 공간을 추가 할당하기 보다, O(N + 1)로 찾은 수열의 두 번째항을 넘김으로써 한 번 더 순회하며 출력하도록 구현하였다. 3. 소스코드더보기fun main() { val n = readln().toInt() var maxLength = 1 var ansIdx = 0 fun findSequence(prev: Int, next: Int, print: Boolean = false): Int {..
[ 백준 11366번 ] Tons of Orcs, no Fibbin’
·
Algorithm/문제풀이
1. 문제https://www.acmicpc.net/problem/11366 2. 풀이앞선 두 년도의 오크 숫자가 누적해서 더해지는 구조로, 각 년도별 오크 수의 점화식을 세워보면 아래와 같다.년도오크 수1a + b2a + 2b32a + 3b43a + 5b55a + 8ba와 b의 차수가 각각 피보나치로 증가하는 구조이고, a의 차수는 b의 차수보다 하나 작은 것을 발견할 수 있다. 즉, 단일 피보나치 배열을 미리 생성해두고, 입력받은 쿼리에 따른 출력을 구현하면 O(N)에 처리할 수 있는 문제.가장 중요한 조건이자 검토해야할 사항은 입/출력의 범위가 Integer를 넘어서지 않는다는 것과, 오크가 한 마리도 없는 경우는 어떻게 할 것인가 라는 점이다.3. 소스코드fun main() { val fib..