
2025.05.01
오늘한 내용 : 파이썬을 잊지 않기 위한 백준 풀이 2문제
WEEK08: BSD소켓, IP, TCP, HTTP, file descriptor, DNS
import sys
from collections import defaultdict
input = sys.stdin.readline
while (True):
m = int(input().strip())
if m == 0:
break
sen = input().strip()
max_len = 0
length =len(sen)
# O(N^2) or set(list) n 시간이라 O(N^3) 일수도? 시간초과
# for i in range(length-m+1):
# for j in range(m,length):
# if len(set(sen[i:j])) <= m:
# max_len = max(max_len,j-i-1)
# else:
# break
freq = defaultdict(int)
unique = 0
end = 0
start = 0
for end in range(length):
if freq[sen[end]] == 0:
unique += 1
freq[sen[end]] += 1
while unique > m:
freq[sen[start]] -= 1
if freq[sen[start]] == 0:
unique -= 1
start += 1
cur_len = end - start + 1
max_len = max(max_len,cur_len)
print(max_len)
import sys
input = sys.stdin.readline
n = int(input().strip())
# 2중 for문 -> 시간초과
# #약수의 합 배열 저장해두기
# fx = [0 for _ in range(1000001)]
# fx[1] = 1
# for i in range(2,n+1):
# for j in range(1,int(i**(1/2))+1):
# if i % j == 0:
# fx[i] += j
# if j**2 != i:
# fx[i] += i//j
# print(sum(fx[:n+1]))
result = 0
for i in range(1,n+1):
result += (n // i) * i
print(result)