@yuwon

# 카드의 초기화
N = 100
cards = [False] * N

# 2~N까지 뒤집음
for i in range(2, N+1):
j = i - 1
while j < len(cards):
cards[j] = not cards[j]
j += i

9.10 파이썬 복습(1번 대칭수)

updated 7 months ago · Python
#11부터 탐색 개시
n=11
while n<10000:
n+=2
#진법에 따른 변수 선언
num_2=format(n,"b")
num_8=format(n,"o")
#str을 사용하여 정수n을 문자열로 변환하여 인덱스로 접근함
if str(n)==str(n)[::-1] and num_2==num_2[::-1] and num_8==num_8[::-1]:
print(n)
from collections import deque
rec=0 #프로그램 돌아가는 것을 알고싶다면 곳곳에 인덱스 넣기
cnt=0
def change(target,coins,usable):
global cnt
global rec
rec+=1
print("rec=",rec,target,coins,usable)
coin=coins.popleft()
if len(coins)==0:

5번 재귀함수(9.8)

updated 7 months ago · Python
from collections import deque

cnt=0
def change(target, coins, usable):
global cnt
coin = coins.popleft()
print(target, coins, usable)
if len(coins)==0:
if target // coin <= usable:
cnt += 1

4번 막대 자르기

7 months ago · Python
def cutbar(m,n,current): #m은 톱의 개수, n은 전체조각수, current는 현재컷팅수
if current >=n:
return 0 #컷팅완료
elif current <m:
return 1+cutbar(m,n,current*2)
else:
return 1+cutbar(m,n,current+m) #톱의 수만큼 추가
print(cutbar(3,20,1))
cnt=0
for coin_500 in range(0,2+1): #500원 동전은 최대 2개
for coin_100 in range(0,10+1): #100원 동전은 최대 10개
for coin_50 in range(0,15+1): #50원 동전은 최대 15개
for coin_10 in range(0,15+1): #10원 동전은 최대 15개
if coin_500 + coin_100 + coin_50 + coin_10 <=15:
if coin_500*500 + coin_100*100 + coin_50*50 + coin_10*10==1000:
cnt+=1
print(cnt)

연습2-(8.4(2))

updated 8 months ago · Python
import re

func=["*",""]
for n in range(1000,10000):
i = str(n)
for a in range(0,2):
for b in range(0,2):
for c in range(0,2):
val = i[3] + func[a] + i[2] + func[b] + i[1] + func[c] + i[0]
val = re.sub(r"0(\d+)",r"\1",val)

연습2-(8.4 복습)

8 months ago · Python
import re

op=["*",""]
for i in range(1000,10000):
c = str(i)
for j in range(0, 2):
for k in range(0, 2):
for l in range(0, 2):
val = c[3] + op[j] + c[2] + op[k] + c[1] + op[l] + c[0]
val = re.sub(r"0(\d+)",r"\1",val)

연습2-수열의 사칙연산(7.28)-책ver.

updated 6 months ago · Python
import re

op = ["*",""]
for i in range(1000, 10000): #1000~9999까지로 하려면 범위+1로 10000으로 해야함
c = str(i)
for j in range(0, len(op)): #자릿수 모두 다 돌려보려고 3중for문을 사용
for k in range(0, len(op)):
for l in range(0, len(op)):
val = c[3] + op[j] + c[2] + op[k] + c[1] + op[l] + c[0]

연습2-수열의 사칙연산(7.28)

updated 7 months ago · Python
import re

func=["*",""] #사용할 연산자 리스트(곱셈 또는 공백)
for i in range(1000, 10000): #범위 맨 마지막은 포함X
c=str(i) #숫자를 문자열로 변환

#각 자리수 사이에 연산자를 넣거나 넣지 않음
for j in range(0,2): #범위는 마지막 포함X이기 때문에 0,2로 지정
for k in range(0,2):
for l in range(0,2):

연습1-대칭수(7.21)

updated 8 months ago · Python
n=11
while n<1000:
n=n+1
num_10=str(n)
num_8=oct(n).replace("0o","")
num_2=bin(n).replace("0b","")
if num_10==num_10[::-1] and num_8==num_8[::-1] and num_2==num_2[::-1]:
print(n)
n+=2