Gold 5
X
X
48 2 5 35
30
주어진 숫자를 LED의 형태로 변환하는 것이 중요하다.
n,k,p,x = map(int, input().split())
led=[[1,1,1,1,1,1,0],[0,1,1,0,0,0,0],[1,1,0,1,1,0,1],[1,1,1,1,0,0,1],[0,1,1,0,0,1,1],[1,0,1,1,0,1,1],[1,0,1,1,1,1,1],[1,1,1,0,0,0,0],[1,1,1,1,1,1,1],[1,1,1,1,0,1,1]]
nb=[]
nx=[]
def curLed():
for a in str(n):
nb.append(a)
for a in str(x):
nx.append(a)
curled=0
cur=[]
for a in range(k-len(nx)):
for ledc in led[0]:
cur.append(ledc)
for a in nx:
a=int(a)
for ledc in led[a]:
cur.append(ledc)
return cur
cur=curLed()
def changeLed(i):
ni=[]
for a in str(i):
ni.append(a)
curled=0
cLed=[]
for a in range(k-len(ni)):
for ledc in led[0]:
cLed.append(ledc)
for a in ni:
a=int(a)
for ledc in led[a]:
cLed.append(ledc)
return cLed
def compLed(i,j):
cnt=0
for o in range(len(i)):
if i[o]!=j[o]:
cnt+=1
return cnt
result=0
for i in range(1,n+1):
cLed=changeLed(i)
if p>=compLed(cur,cLed):
result+=1
print(result-1)
먼저 0~9까지에 대한 LED 정보를 0,1로 담아줬다.
그리고 숫자를 LED 형태로 변환해주는 함수를 구현했다.
만약 k=4 인데 2자리수의 숫자라면 k-2의 범위만큼 0의 LED 정보를 append 해줬다.
그리고 x와 1~N까지의 LED를 비교해서 하나 하나 카운트하고 카운트가 P보다 작다면 result+1 해줬다.
01:02:43
막상 구현한 후에 보니 어렵지 않은 로직이었다.
빡구현 문제가 있을 때 쉬운 구현 문제가 여러개 있다고 생각하고 함수를 사용해서 문제를 쪼개자.
항상 좋은 글 감사합니다.