이거도 간단하게 
 
import sys
num = list(sys.stdin.readline().rstrip())
#print(num)
 
for i in range(len(num)-1,-1,-1):
  print(num[i],end="")
 
일단 간단하게
 
n = int(input())
 
arr=list(map(int,input().split()))
 
#print(arr)
#print(arr[0],arr[n-1])
 
for i in range(n-1,-1,-1):
  print(arr[i], end=" ")
 
논리를 만들다 보니 형태가 비슷하게 나온다.....
http://chul0302.egloos.com/3300468 이것과 답이 거의 같다...
 
 
n = int(input())
 
d = [0] * 10001
 
d[1] = 1
d[2] = 2
 
for i in range(3, n+1):
    d[i] = (d[i-1] + d[i-2]) % 100000007
 
print(d[n])
 
계단 오르기는 이젠 충분히 마스터 된듯...
그리고 d의 개수가 크면 %1000으로...
아니면 그냥;;;
 
n = int(input())
 
d = [0] * 21
 
d[1] = 1
d[2] = 2
 
for i in range(3, n+1):
    d[i] = (d[i-1] + d[i-2])
 
print(d[n])

https://codeup.kr/problem.php?id=3704

 
계단오르기
 
계단은 1,2,3칸으로 움직일수 있으므로, 고유하다( 중복 x)
Stair (1) = 1 --> 1가지
S (2) = 2. 1+1 --> 2가지 
S (3) = 3, 2+1, 1+2, 1+1+1 --> 3가지
 
근데 다시 생각해 보면 계단 3개로 구분되니, 계단 3개 기준으로 값을 계산하면....
 
그럼 S(4)는?? 
S(4-3) + S(4-2) + S(4-1) = 1+2+4 = 7가지임
 
그럼 다시 문제에서 나온 S(5)는?
S(4)+S(3)+S(2)=7+4+2=13 
 
논리는 이해가 되었으나 재귀로 풀면 시간초과가 생긴다...
결국 for로 돌려서 답은 나옴...
 
n = int(input())
 
d = [0] * 100001
 
d[1] = 1
d[2] = 2
d[3] = 4
 
for i in range(4, n+1):
    d[i] = (d[i-1] + d[i-2] + d[i-3]) % 1000
 
print(d[n])
 
 
생각을 바꿔서 상위 노드는 하위 노드의 1/2의 값이 되어, 하나씩 상위노드로 갈수 있는 점을 고려하면 된다.
그러면서 node값을 하나씩 증가 시킨다.
 
n, m = map(int, input().split())
 
def node(a, b):
#  print("a:", a, "b:", b)
  if a == b:
    return 0
  elif a < b:
    return node(a, b // 2) + 1
  elif a > b:
    return node(a // 2, b) + 1
 
 
print(node(n, m))

+ Recent posts