โ 2798 ๋ธ๋์ญ โ
from itertools import combinations
N,M = map(int, input().split())
cards = list(map(int,input().split()))
groups = list(combinations(cards,3))
sum_of_group = []
for group in groups:
sum_of_group.append(sum(group))
sum_of_group.sort(reverse=True)
for sum_of_group_each in sum_of_group:
if sum_of_group_each <= M:
print(sum_of_group_each)
break
- ํ์ด 1 - (combinations ์กฐํฉ ํจ์๋ฅผ ์ด์ฉํ ๋ชจ๋ ๊ฒฝ์ฐ์ ์ ์ํ)
๐ฝ combinations(cards,3) ํจ์๋ฅผ ์ด์ฉํด์ ์ค๋ณต์์ด 3์ฅ์ ์นด๋๋ฅผ ๋ฝ๋ ๊ฐ์ง์๋ฅผ ๋ชจ๋ ๊ตฌํ ์ ์๋ค.
๐ฝ ๊ฐ๊ฐ์ ๊ฐ์ง์ ์ค M์ ์ต๋ํ ๋ง๋ ๊ฒฝ์ฐ์ ์(๋ชจ๋ ๊ฒฝ์ฐ์ ์์ ๊ดํด ์ํ - brute-force)๋ฅผ ์ฐพ์ผ๋ฉด ๋
- ํ์ด 2 - (for๋ฌธ ์ธ ๋ฒ)
๐ฝ for๋ฌธ์ ์ธ ๋ฒ ๋๋ฆผ์ผ๋ก์จ, combinations ํจ์ ์ฌ์ฉ์์ด ๋ฆฌ์คํธ์ ๋ชจ๋ ์ผ์ด์ค๋ฅผ ๊ฐ์ ธ์ ํ๋จํ๋ brute-force๋ฅผ ์ํ
N,M = map(int, input().split())
cards = list(map(int,input().split()))
res = 0
for i in range(N):
for j in range(i+1,N):
for k in range(j+1,N):
if cards[i] + cards[j] + cards[k] > M:
continue
else:
res = max(res,cards[i] + cards[j] + cards[k])
print(res)
๐ฝ ์ฌ๊ธฐ์, for๋ฌธ์ ๊ฐ ์์ฒด๋ฅผ ์๋๋ฆฌ๊ณ , index๋ฅผ ๋๋ ค indexing์ ์ฌ์ฉํ์์์ ๊ธฐ์ต: ์ฝ๋ ์ถ์ฒ
โ 2231 ๋ถํดํฉ โ
N = int(input())
l = len(str(N))
yes = 0
if (N-l*9) < 0:
start = 1
else:
start = N-l*9
for num in range(start,N):
each_sum = 0
for each in list(str(num)):
each_sum+=int(each)
if num + each_sum == N:
print(num)
yes+=1
break
if yes != 1:
print(0)
๐ฝ ์ ํ์ ์ธ brute-force ์๊ณ ๋ฆฌ์ฆ - ์กฐ๊ฑด์ ๋ถํฉํ๋ ์ง ๋ฒ์๋ฅผ ๋ชจ๋ ํ์ํ๊ธฐ์ - ๊ด๊ฑด์ ์ฝ๋ ์๋ ์๊ฐ์ ์ต๋ํ์ผ๋ก ์ค์ด๋ ๋ฐฉ๋ฒ
๐ฝ โ ์์ฑ์๊ฐ ๊ฐ๋ฅํ ๋ฒ์๋ฅผ ์ต๋ํ ์ขํ๋ค
โถ N์์ len(N)*9๋ฅผ ๋บ ๊ทธ ์ฌ์ด์ ๋ฒ์๊ฐ ์์ฑ์ ํ๋จ ๊ฐ๋ฅ ๋ฒ์!
โถ ์ด ๋ฒ์๋ฅผ ๋ฒ์ด๋๋ฉด ์ ์ด์ ์์ฑ์ ์์ฑ์ด ์๋๊ธฐ์ brute-force ํ์ ๋ฒ์๋ฅผ ์ต์ํ.
(๋ง์ฝ 0๋ณด๋ค ์๋ค๋ฉด 1๋ถํฐ ์์ํ๊ฒ ์ค์ )
๐ฝ โก ๊ฐ์ฅ ์์ ์์ฑ์๋ฅผ ๊ตฌํด๋ด๋ ํ๋ก๊ทธ๋จ์ด๋, ๋ฒ์์ ๊ฐ์ฅ ์ต์๊ฐ๋ถํฐ ์์ํด, ์์ฑ์๊ฐ ๋ฐ๊ฒฌ๋๋ฉด ๋ฐ๋ก break ๊ฑธ์ด ์ฝ๋ ์๋ ์๊ฐ ์ต์ํ
โถ ๋์ค์ ์ํ๋ ๋ต์ ๊ตฌํ๋ค๋ฉด, ๋ ํ์ ํ์์์ด ๋ฐ๋ก ๋ต์ ์ถ๋ ฅํ๊ฒ ํ๊ณ break๋ฌธ์ ๊ฑธ์ด loop ์๋์ ๋ฉ์ถ๋ค.
๐ฝ โข yes ๋ณ์๋ฅผ ํ์ฉํด, ๊ตฌํ๋ค๋ฉด 1, ์๋ ๊ฒฝ์ฐ ์ญ loop์ ๋์ 0์ผ๋ก ๊ฐ์ด ๋ณํ์ง ์๊ธฐ์, ์ต์ข ์ ์ผ๋ก yes ๋ณ์ ํ์ ์ผ๋ก 0์ ์ถ๋ ฅํ๊ฒ ํจ
โ 25494 ๋จ์ํ ๋ฌธ์ (Small) โ
๐ฝ ๋ฌธ์ ๊ทธ๋๋ก 1๋ถํฐ ์๊ธฐ์์ ๊น์ง ๊ฐ๊ฐ ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ์ดํผ๋ 3์ค for๋ฌธ - brute-force๋ก ํ์ด๋ ๋๋ค
for _ in range(int(input())):
a,b,c=map(int,input().split())
cnt = 0
for i in range(1,a+1):
for j in range(1,b+1):
for k in range(1,c+1):
if i%j == j%k == k%i:
cnt += 1
print(cnt)
โ brute-force ์ด์ธ ํ์ด โ
๐ฝ ์ํ๋ฌธ์ ๋ก, ์ a=b=c์ธ ๊ฒฝ์ฐ๋ง ๋ต์ด ๋๋ ์ง, ์ฆ๋ช ํด๋ณด๋ฉด
โ a < b < c
โก a < b = c
โข a = b = c
โ >
→ a mod b = a (b๊ฐ a๋ณด๋ค ํฌ๋ฏ๋ก)
→ b mod c = b (c๊ฐ b๋ณด๋ค ํฌ๋ฏ๋ก)
∴ ๋ฐ๋ผ์, a mod b์ธ ๊ฒฐ๊ณผ์ b mod c์ธ ๊ฒฐ๊ณผ๊ฐ ์๋ก ๊ฐ์์ผ ํ๋ฏ๋ก, a์ b๊ฐ ๊ฐ๋ค๋ ๊ฒฐ๋ก ์ด ๋์ ๋ชจ์! a<b<c๊ฐ ๋ ์ ์๋ค
โก>
→ a mod b = a
→ b mod c = 0 (b์ c๊ฐ ๊ฐ์ผ๋ฏ๋ก ๋๋จธ์ง๋ 0)
∴ ๋ฐ๋ผ์, a mod b์ธ ๊ฒฐ๊ณผ์ b mod c์ธ ๊ฒฐ๊ณผ๊ฐ ์๋ก ๊ฐ๊ฒ ๋๋ฏ๋ก, ์ฆ, a๋ 0์ด๋ผ๋ ๊ฒฐ๋ก ์ด ๋์ ๋ชจ์!
(a,b,c ๋ชจ๋ 1์ด์์ ์์ฐ์๋ผ๋ ์ ์ ๊ฐ ๋ฌธ์ ์ ์์ผ๋ฏ๋ก)
โข>
→ a mod b = 0
→ b mod c = 0
→ c mod a = 0
∴ ์ ์ผํ๊ฒ โข์ด ์ฑ๋ฆฝ!
∴ ๋ฐ๋ผ์, ์ธ ์๊ฐ ๋ชจ๋ ๊ฐ์ ๊ฒฝ์ฐ์ ์๋ ์ธ ์ ์ค ์ต์๊ฐ ์์ฒด๋ฅผ ๋ปํ๋ฏ๋ก, min()๋ง ๋๋ฆฌ๋ฉด ๋ฐ๋ก ๋ต์ด ๋์จ๋ค
for _ in range(int(input())):
print(min(map(int,input().split())))
(์ผ์ผ์ด ๋ค ๋๋ฆฌ๋ brute-force์ด๋ฏ๋ก ์์ ์๊ฐ์๋ ์ฐจ์ด๊ฐ ๋๋ค)
โ 1526 ๊ฐ์ฅ ํฐ ๊ธ๋ฏผ์ โ
def is_gumminsu(num):
x = {'4','7'}
for ch in str(num):
if ch not in x:
return False
return True
N = int(input())
for n in range(N,3,-1):
if (n%10 == 4) or (n%10 == 7):
if is_gumminsu(n):
print(n)
break
๐ฝ brute-force ํ์ด์ ํต์ฌ์ '์๊ฐ๋จ์ถ' - ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ์ํํ๊ธฐ์ ์ต๋ํ ์๊ฐ์ด ๋ ๊ฑธ๋ฆฌ๋ ์ชฝ์ผ๋ก ์ฅ์น๋ฅผ ๋ง์ด ๋ง๋ค์ด ๋์์ผ ์ข๋ค.
๐ฝ ์ฝ๋ ์ค๋ช >
โ 4์ 7๋ก๋ง ๊ตฌ์ฑ๋๋ฏ๋ก 10์ผ๋ก ๋๋ ๋๋จธ์ง๊ฐ 4์ 7์ด ์๋ ๊ฒฝ์ฐ๋ ํจ์๋ฅผ ๊ฑฐ์น์ง ์๊ณ ๋ฐ๋ก pass ํ๊ฒ ๋ง๋ฆ
โก pass๋์ง ์์ ๊ฒฝ์ฐ is_gumminsu ํจ์๋ก ์ด๋ → ๋งจ ์์๋ฆฌ๋ถํฐ 4๋ 7์ด ์๋ ๊ฒฝ์ฐ ๋ฐ๋ก False ๋ฆฌํด
โ 16861 Harshad Numbers โ
n=int(input())
while 1:
total=0
for i in range(len(str(n))):
total+=int(str(n)[i])
if n%total==0:
print(n)
break
n+=1
๐ฝ n๊ฐ์ 1์ฉ ์ฆ๊ฐํ๋ฉด์ harshad number์ ํด๋น๋๋ ์ง ๊ณ์ ํ์ธํ๋ฉด ๋!
โ 24807 Math Homework โ
b,c,d,l=map(int,input().split())
y=0
for i in range(l//b+1):
for j in range((l-i*b)//c+1):
for k in range((l-i*b-j*c)//d+1):
if (i*b+j*c+k*d)==l:
y+=1
print(i,j,k)
if y==0:print('impossible')
๐ฝ b - c - d ์ฐจ๋ก๋๋ก ๊ฐ๊ฐ 0๋ถํฐ ์ ์ฒด l๋ก ๋๋ ๋ชซ๊น์ง ๋๋ฉด์ (c๋ b๊ฐ ์ฐจ์งํ ๋ถ๋ถ ์ ์ธํ ๋ฒ์๊น์ง, d๋ b์ c ๋ ๋ค ์ฐจ์งํ ๋ถ๋ถ ์ ์ธํ ๋ฒ์๊น์ง - ๋ฒ์๋ฅผ ๊ทธ๋ ๊ฒ ์ ์ก์๋ ๋์ง๋ง brute-force์ด๋ฏ๋ก ์์ ์๊ฐ ์ต์ํ๋ฅผ ์ํด ๋ ๋ฒ์๋ฅผ ์ก์์ค) ํฉ์ด l๊ณผ ๊ฐ์ ์ง ๋น๊ต, ๋ง๋ค๋ฉด ๋ฐ๋ก ์ถ๋ ฅ!
๐ฝ ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ๋๋ฉด์ l๊ณผ ๊ฐ์ ์ง ๋น๊ตํ๋ฏ๋ก brute-force ๊ธฐ์ด ์ ํ
โ 6131 ์์ ์ ๊ณฑ์ โ
N=int(input())
ans = 0
for i in range(1,500):
num = i**2 + N
if num**(1/2)>500:break
if num**(1/2) == int(num**(1/2)):ans+=1
print(ans)
๐ฝ 499๊น์ง ์ผ์ผ์ด ๊ฒ์ฌ (500์ ๋ต์ด ๋ ์ ์์ผ๋ฏ๋ก pass)
๐ฝ ์ฌ๊ธฐ์ ๋ง์ฝ ํ๋ณด B๊ฐ 500์ ์ด๊ณผํ๋ค๋ฉด i๊ฐ ์ฆ๊ฐํ๋ฉด์ ๋ ์ด์ ์์ ์ ๊ณฑ์๋ ๋์ฌ ์ ์์ผ๋ฏ๋ก break
โ 10419 ์ง๊ฐ โ
for _ in range(int(input())):
d=int(input())
ans=0
while 1:
if (ans*(ans+1))>d:
print(ans-1)
break
ans+=1
๐ฝ BF๋ก ์ผ์ผ์ด ans์ ๊ฐ์ ์ฆ๊ฐ์์ผ s(s+1)์ ๊ฒฐ๊ณผ๊ฐ d๋ฅผ ๋์ ๋ ๊น์ง ํ์ธ
โ 15667 2018 ์ฐ์ธ๋ํ๊ต ํ๋ก๊ทธ๋๋ฐ ๊ฒฝ์ง๋ํ โ
N=int(input())
K=1
while 1:
if (1+K+K**2)==N:
print(K)
break
K+=1
๐ฝ ํ๋ณด๊ฐ ๋ ์ ์๋ K๋ฅผ 1๋ถํฐ ์ฐจ๋ก๋๋ก 1์ฉ ์ฆ๊ฐ์์ผ ์ฃผ์ด์ง ๋ฐฉ์ ์ $K^2 + K + 1 = N$์ ๋ง์กฑ์ํค๋ฉด ๋ต ์ถ๋ ฅํ๊ณ ๋!
๐ฝ ๋๋ $K^2 + K + 1 = N$์ K์ ๋ํ ์ด์ฐจ๋ฐฉ์ ์์ผ๋ก ํ์ด K ๊ด๋ จ ํด๋ฅผ ๊ทผ์ ๊ณต์ ๊ฒฐ๊ณผ๋ก ๋์ ํ ์๋ ์๋ค.
print(int(((4*int(input())-3)**(1/2)-1))//2)
โ 9094 ์ํ์ ํธ๊ธฐ์ฌ โ
import sys
input=sys.stdin.readline
for _ in range(int(input())):
n,m=map(int,input().split())
cnt=0
for i in range(1,n-1):
for j in range(i+1,n):
if (i**2+j**2+m) % (i*j) == 0:
cnt+=1
print(cnt)
๐ฝ ์ค์ฒฉ for loop์ ํตํด ์ผ์ผ์ด ๊ฒ์ฌํ๋ฉฐ ๋ถ์๋ฅผ ๋ถ๋ชจ๋ก ๋๋ ๋๋จธ์ง๊ฐ 0์ธ์ง ํ์ธ!
โ 4690 ์์ ์ธ์ ๊ณฑ โ
for a in range(6,101):
for b in range(2,100):
for c in range(b,100):
for d in range(c,100):
if a**3 == b**3 + c**3 + d**3:
print(f'Cube = {a}, Triple = ({b},{c},{d})')
๐ฝ ์์ ์ธ์ ๊ณฑ ๋ฐฉ์ ์์ด ๋ง๋ ์ง ์ผ์ผ์ด ํ์ธํ๊ธฐ ์ํด for๋ฌธ์ผ๋ก ์ฐจ๋ก๋๋ก ํ์ธ
โ 19532 ์ํ์ ๋น๋๋ฉด๊ฐ์์ ๋๋ค โ
import sys
a,b,c,d,e,f=map(int,input().split())
for x in range(-999,1000):
for y in range(-999,1000):
if ((a*x+b*y)==c) and ((d*x+e*y)==f):
print(x,y)
sys.exit()
๐ฝ ์ผ์ผ์ด -999๋ถํฐ 999๊น์ง x์ y๋ฅผ ๋๊ณ ๋๋ ค ๋ง๋ค๋ฉด ๋ฐ๋ก ์ถ๋ ฅํ๊ณ ์ข ๋ฃ! ์ ํ์ ์ธ BF ์ ํ
โ 1075 ๋๋๊ธฐ โ
N=input().rstrip()
F=int(input())
for i in range(100):
if i<10:n=int(N[:-2]+'0'+str(i))
else:n=int(N[:-2]+str(i))
if n%F==0:
if i<10:print('0'+str(i))
else:print(i)
break
๐ฝ 00๋ถํฐ 99๊น์ง ์ผ์ผ์ด ํ์ธ
โ 3040 ๋ฐฑ์ค ๊ณต์ฃผ์ ์ผ๊ณฑ ๋์์ด โ
from itertools import combinations
hats=[int(input().rstrip())for _ in range(9)]
total=sum(hats)
for x in list(combinations(hats,7)):
if sum(x) == 100:
print(*list(x),sep='\n')
break
๐ฝ combinations์ ๊ฒฐ๊ณผ๋ฅผ list()๋ก list๋ก ๋ง๋ค์ด์ฃผ์ด์ผ ๋ฐ๋ณต๋ฌธ ๋์๊ฐ
๐ฝ tuple์ list()๋ฅผ ํ์ฉํด list๋ก ๋ฐ๊ฟ ์ ์์
โ 2309 ์ผ๊ณฑ ๋์์ด โ
from itertools import combinations
N=[int(input())for _ in range(9)]
l=list(combinations(N,7))
for x in l:
if sum(x) == 100:
print(*sorted(list(x)),sep='\n')
break
โ 10448 ์ ๋ ์นด ์ด๋ก โ
import sys
from itertools import product
input=sys.stdin.readline
T=[(i*(i+1))//2 for i in range(1,45)]
sums=[]
for pair in product(T,repeat=3):
sums.append(sum(pair))
for _ in range(int(input())):
K=int(input())
if K in sums: print(1)
else: print(0)
๐ฝ ํ๋ณด ์ผ๊ฐ์๋ฅผ ๋ชจ๋ ๋ชจ์ผ๊ณ ์ค๋ณต์์ด์ repeat = 3์ธ์๋ก ๊ฐ๋ฅํ ์ผ๊ฐ์์ ๋ชจ๋ ํฉ ๊ตฌํจ(BF)
'BOJ > ๐ฅ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
โ Basics III - 40 Solvedโ (0) | 2022.10.21 |
---|---|
โ ์ ๋ฐ๋ ์ฐ์ฐ - 1๋ฌธ์ () โ (1) | 2022.10.20 |
โ Implementation Beginner II - 50 Solvedโ (0) | 2022.10.10 |
โ Math & Geometry Upper-Beginner I - 30 Solvedโ (0) | 2022.10.09 |
โ ์ ๋ ฌ ๊ธฐ์ด1 - 8๋ฌธ์ ()โ (2) | 2022.10.05 |
๋๊ธ