dev/algorithm
BOJ / 2635번 / 수 이어가기 [Go][Python3]
crscnt
2021. 1. 28. 21:00
👩🏻💻 문제
2635번: 수 이어가기
첫 번째 수가 주어진다. 이 수는 30,000 보다 같거나 작은 양의 정수이다.
www.acmicpc.net
✍🏻 풀이
🎨 Go
// https://www.acmicpc.net/problem/2635
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
reader := bufio.NewReader(os.Stdin)
writer := bufio.NewWriter(os.Stdout)
defer writer.Flush()
var n int
fmt.Fscanln(reader, &n)
var maxCount int
var answer []int
for second := 1; second <= n; second++ {
var numbers = []int{n, second}
for i := 2; numbers[i-2]-numbers[i-1] >= 0; i++ {
numbers = append(numbers, numbers[i-2]-numbers[i-1])
}
if maxCount < len(numbers) {
maxCount = len(numbers)
answer = numbers
}
}
fmt.Fprintln(writer, maxCount)
for i := 0; i < len(answer); i++ {
fmt.Fprintf(writer, "%d ", answer[i])
}
fmt.Fprintln(writer, "")
}
🎨 Python3
# https://www.acmicpc.net/problem/2635
import sys
if __name__ == "__main__":
n = int(sys.stdin.readline())
max_count = 0
answer = []
for second in range(1, n+1):
numbers = [n, second]
i = 2
while numbers[i-2]-numbers[i-1] >= 0:
numbers.append(numbers[i-2]-numbers[i-1])
if max_count < len(numbers):
max_count = len(numbers)
answer = numbers
i += 1
print(max_count)
for i in answer:
print("{} ".format(i), end='')
print()
728x90