728x90
반응형

이 문제는 피사노 주기를 알면 쉽게 풀 수 있다. 피보나치 수를 나눈 수는 항상 주기를 가지는데,

피보나치 수를 나눌 수를 k라고 할 때, k = 10^n이면 피사노 주기는 15 * 10^(n-1)이다.

n = int(input())
a, b = 0, 1
n = n % (15*100000)
for i in range(n):
    a, b = b%1000000, (a+b)%1000000
print(a)
728x90
반응형
728x90
반응형

2747번과 똑같이 풀 수 있다.

n = int(input())
a, b = 0, 1
for i in range(n):
    a, b = b, a+b
print(a)

728x90
반응형
728x90
반응형

단순 수학 문제이다.

n = int(input())
a, b = 0, 1
for i in range(n):
    a, b = b, a+b
print(a)

 

728x90
반응형
728x90
반응형

len을 사용해 길이를 구하자.

print(len(input()))

728x90
반응형
728x90
반응형

2741번 N 찍기 문제의 반대 버전이다.

for i in range (int(input()), 0, -1):
    print(i)

728x90
반응형
728x90
반응형

쉽다.

for i in range (1, int(input())+1):
    print(i)

728x90
반응형
728x90
반응형

format을 쓰면 쉽게 출력할 수 있다.

n = int(input())

for i in range (1, 10):
    print('{0} * {1} = {2}'.format(n, i, n*i))

728x90
반응형
728x90
반응형

반복문을 사용해 조건에 맞게 출력해주자.

for _ in range(int(input())):
    li = list(input().split())
    n = int(li[0])
    word = li[1]
    for l in word:
        print(l*n, end = '')
    print()

728x90
반응형
728x90
반응형

세 수를 정렬하고 알파벳 순서에 맞게 출력하면 된다.

나는 ord를 사용했다.

EX) li = [1, 5, 3],  CBA 순서

li 정렬 -> li = [1, 3, 5]

li[ord('C') - ord('A')] = li[97 - 95] = li[2] = 5 출력

같은 방식으로 li[1], li[0]을 출력하게 됨. 

num_li = sorted(map(int, input().split()))
for c in input():
    print(num_li[ord(c)-ord('A')], end = ' ')

728x90
반응형
728x90
반응형

lambda를 사용해 기준을 잡고 정렬해주면 된다.

이름 오름차순 -> 국어 내림차순 -> 영어 오름차순 -> 수학 내림차순

그냥 input()을 사용해도 통과는 되지만 시간이 좀 오래 걸린다(4580ms)

sys.stdin.readlien()을 사용하면 9배가량 빨라진다(504ms)

import sys
li = []

for i in range(int(input())):
    t = sys.stdin.readline().split()
    t[1:] = map(int, t[1:])
    li.append(t)

li = sorted(li, key=lambda x : x[0])
li = sorted(li, key=lambda x : x[3], reverse = True)
li = sorted(li, key=lambda x : x[2])
li = sorted(li, key=lambda x : x[1], reverse = True)

for i in li:
    print(i[0])

728x90
반응형
728x90
반응형

최대공약수를 구하면 최소공배수는 쉽게 구할수 있다. 

최소공배수 = n1 * n2 // 최대공약수

n1, n2 = map(int, input().split())
a, b = max(n1, n2), min(n1, n2)
while(b != 0):
        n = a%b
        a = b
        b = n
gcd = a
lcm = n1 * n2 // gcd
print(gcd)
print(lcm)

728x90
반응형
728x90
반응형

n1 = int(input())
n2 = input()
for n in n2[::-1]:
    print(n1*int(n))
print(n1*int(n2))

728x90
반응형
728x90
반응형

저번에 봤던 소수 문제와 마찬가지로 에라토스테네스의 체를 사용하면 쉽게 풀 수 있다.

n1 = int(input())
n2 = int(input())
li = [1]*(n2+1)
for i in range(2, n2//2 + 1):
    if li[i] == 1:
        for j in range(i+i, n2+1, i):
            li[j] = 0
prime = []
for i in range(2, len(li)):
    if li[i] == 1:
        prime.append(i)
ans = []
for i in range(n1, n2+1):
    if i in prime:
        ans.append(i)
if len(ans) == 0:
    print(-1)
else:
    print(sum(ans))
    print(ans[0])

728x90
반응형
728x90
반응형

입력을 str으로 바꾸고 숫자의 개수를 세면 편하다.

m = 1
for i in range(3):
    m *= int(input())
li = []
for i in range(10):
    li.append(str(m).count(str(i)))
for n in li:
    print(n)

728x90
반응형
728x90
반응형

li = []
for i in range(9):
    li.append(int(input()))
print(max(li))
print(li.index(max(li))+1)

728x90
반응형

+ Recent posts