num = int(input())
d = [0] * (num+1)
for i in range(1, num + 1):
d[i] = i
j = 1
while j * j <= i:
d[i] = min(d[i], d[i - j * j] + 1)
j += 1
print(d[num])
1004

import collections
caseNum = int(input())
arr = input().split()
counter = collections.Counter(arr)
num = int(input())
searchNums = input().split()
for s in searchNums:
print(counter[s], end=' ')
1005

#include <iostream>
#include <vector>
#include <utility>
#include <algorithm>
using namespace std;
int main() {
int num(0);
cin >> num;
int x, y;
vector <pair<int, int>> arr;
for (int i = 0; i < num; i++){
cin >> x >> y;
arr.push_back({x,y});
}
sort(arr.begin(),arr.end());
for (auto &v : arr) {
cout << v.first << " " << v.second << "\n";
}
return 0;
}
1006

num, maxWeight = map(int, input().split())
d = [0] * (maxWeight+1)
for i in range(num):
weight, value = map(int, input().split())
for w in range(maxWeight, weight - 1, -1):
d[w] = max(d[w], d[w - weight]+ value)
print(d[maxWeight])
1007

text = input()
bomb = input()
stack = []
bomb_len = len(bomb)
for ch in text:
stack.append(ch)
if len(stack) >= bomb_len and ''.join(stack[-bomb_len:]) == bomb:
del stack[-bomb_len:]
result = ''.join(stack)
print(result if result else "FRULA")
1008

casenum = int(input())
for i in range(casenum):
num = int(input())
d = [0] * (num + 1)
d[1] = 1
if num >= 2:
d[2] = 2
if num >= 3:
d[3] = 4
for j in range(4, num +1):
d[j] = d[j-1] + d[j-2] + d[j-3]
print(d[num])
1009

def func(num):
if(num <= 1):
return 1
return num * func(num-1)
num = int(input())
facNum = func(num)
count = 0
while facNum % 10 == 0:
count += 1
facNum //= 10
print(count)
1010

num = int(input())
d = [0] * (num+1)
for i in range(1, num + 1):
d[i] = i
j = 1
while j * j <= i:
d[i] = min(d[i], d[i - j * j] + 1)
j += 1
print(d[num])'공부 > 코딩' 카테고리의 다른 글
| [알고리즘 스터디] 5주차 결산 (0) | 2025.12.15 |
|---|---|
| [알고리즘 스터디] 4주차 결산 (0) | 2025.12.12 |
| 아주 유용하고 편리한 생년월일 입력 프로그램 (0) | 2025.12.08 |
| 알고리즘 스터디 2주차 결산 (0) | 2025.10.05 |
| [알고리즘 스터디] 1주차 결산 (0) | 2025.09.27 |