알고리즘은 머리의 상태에 따라 정말 다르긴 하다.....
이 간단한 것을...-.-;;
 
n, k = map(int, input().split())
arr=[0]*(n+1)
arr = list(map(int, input().split()))
 
#print(arr)
cnt = 0
 
for i in range(n):
#  print("arr[",i,"]=",arr[i])
  if int(arr[i]) >= k:
    cnt=i+1
#    print("i:",i, "cnt:", cnt)
    break
 
if cnt==0:
  cnt=n+1
 
print(cnt)
 
n, s = map(int, input().split())
arr=[0]*(n+1)
arr = list(map(int, input().split()))
 
cnt = 0
 
def part_sum(i, sum):
    global cnt
 
    if i >= n:
        return
    sum = sum+ arr[i]
 
    if sum == s:
        cnt = cnt + 1
    part_sum(i + 1, sum)
 
    sum = sum - arr[i]
    part_sum(i + 1, sum)
    
    
part_sum(0, 0)
print(cnt)
 
 
def count_changes(money, coins):
  memo=[None for _ in range(money+1)]
  memo[0]=0
 
  def dy_program(change):
    for total in range(1, change+1):
      min_val=total
      for coin in coins:
        if total >= coin:
          res=memo[total-coin]
          min_val=min(res, min_val)
      memo[total]=min_val+1
    return memo[change]
  return dy_program(money)
 
mo=int(input())
n=int(input())
arr=[0]*(n+1)
arr=list(map(int, input().split()))
 
print(count_changes(mo,arr)) 
 
부분합 최대 부분합은 이해하는 상태에서 풀면 그나마 손 쉽다
 
 
n=int(input())
do_p, to_p=map(int,input().split())
do_k=int(input())
arr_k=[0]*(n+1)
for i in range(n):
  arr_k[i]=int(input())
 
arr_k.sort(reverse=True)
#print(arr_k)
 
res=0
res1=0
 
def partial_sum(arr, a, b):
  arr = [0] + arr
  partial_sum = [0] * len(arr)
 
  for i in range(1, len(arr)):
    partial_sum[i] = partial_sum[i-1] + arr[i]
 
  partial_sum = partial_sum[1:]
#  print("partial_sum", partial_sum)
    
#  print("total sum", partial_sum[-1])
  
  if((a-1)<0):
    return partial_sum[b]
  else:
    return partial_sum[b] - partial_sum[a-1]
 
#print("aaaa=",partial_sum(arr_k, 0, 1))
 
 
for i in range(n):
  res1=(do_k+partial_sum(arr_k, 0, i))//(do_p+(to_p*(i+1)))
 
  if res < res1:
    res=res1
  elif res > res1:
    break
 
  
print(res)
 
list로 만들어서 몫을 cnt하고 나머지는 재 입력하여 계산
꼭 큰 수별로 해야함
 
mo = int(input())
 
cnt=0
change=[50000, 10000, 5000, 1000, 500, 100, 50, 10]
 
for i in change:
cnt=cnt+mo//i
mo=mo%i 
 
print(cnt)

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

 
10, 5, 1, -10, -5, -1가 있어서 일의 자리수가 0~10일때까지의 경우의 수를 써서 넣음
 
0 => 0
1 => 1
2 => 1 x 2 -> 2
3 => 1 x 3 -> 3 or 5x1 +(-1)x2 -> 3
4 => 5x1+(-1)x1=>2
5 => 5x1 -> 1
6 => 5x1 + 1x1 -> 2
7 => 5x1 + 1x2 -> 3
8 => 10x1 + (-1)x2 -> 3
9 => 10x1 + (-1)x1 -> 2
10 => 10x1 ->1
 
여기에 10으로 나눈 몫만 더하면 됨
 
p_temp, s_temp = map(int, input().split())
 
# 10, 5, 1, -10, -5, -1
 
temp=abs(s_temp-p_temp)
 
cnt=0
cnt=cnt+temp//10
k=temp%10
#print("0:",cnt, temp)
 
 
 
if k==0:
  cnt=cnt
elif k==1 or k==5:
  cnt=cnt+1 
elif k==2 or k==4 or k==6 or k==9:
  cnt=cnt+2
elif k==3 or k==7 or k==8:
  cnt=cnt+3
 
 
print(cnt)

+ Recent posts