[백준] 22251 빌런 호석 - 구현(빡)

jckim22·2023년 7월 18일
0

[ALGORITHM] STUDY (PS)

목록 보기
33/86

난이도

Gold 5

풀이 참고 유무

X

막힌 부분

X

문제

문제 바로가기

입력


출력

예제 입력

48 2 5 35

예제 출력

30

문제 검토

주어진 숫자를 LED의 형태로 변환하는 것이 중요하다.

풀이(python)

Python

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

총평

막상 구현한 후에 보니 어렵지 않은 로직이었다.

빡구현 문제가 있을 때 쉬운 구현 문제가 여러개 있다고 생각하고 함수를 사용해서 문제를 쪼개자.

profile
개발/보안

1개의 댓글

comment-user-thumbnail
2023년 7월 18일

항상 좋은 글 감사합니다.

답글 달기