😁 빅데이터 문제 풀기 & Study/- BAEKJOON 문제

[2929] 머신 코드 / 파이썬 (정규표현식)

또방91 2021. 12. 6. 09:12
728x90

 

 

문제 링크: https://www.acmicpc.net/problem/2929

 

2929번: 머신 코드

종수는 새 마이크로프로세서를 구매했다. 새 프로세서에 예전 프로세서에서 작동하던 프로그램을 실행시키니 실행이 되지 않았다. 며칠동안 두 프로세서의 기술 문서를 살펴본 결과, 그 결과를

www.acmicpc.net

 


1차시도 실패

 <명령은 반드시 4로 나누어지는 위치에서 시작해야 한다.>라는 문구를 나누는 것보다 4로 빼는 거로 잘못 설계 했었다.... 예를 보면 충분히 가능하지만 만약 AaaaBbbbCccccccD 이렇게 나오는 경우는 풀수 없는 것이다....ㅠ

1
2
3
4
5
6
7
8
9
import re
 
text= input()
sp_list=re.split('(?=[A-Z])',text)
cnt=0
for i in range(1,len(sp_list)-1):
    a= 4-len(sp_list[i])
    if a>0: cnt+=a  
print(cnt)
cs

정답은 ??

1
2
3
4
5
6
7
8
9
import re
= input()
= re.split('(?=[A-Z])',t)

cnt = 0    
for i in range(1,len(p)-1):
    a= len(p[i]) % 4
    if a!= 0: cnt+=(4-a)    
print(cnt)
cs

 


💯 풀이 과정

1) 정규표현식으로 [A-Z]까지 검색을 하는데 포함을 해야하니까 앞에 ?=를 붙여 긍정탐색

2) 그렇게 되면 리스트로 묶여져 나온다 (예) EaEbFabG -> ['', 'Ea', 'Eb', 'Fab', 'G']

3) 여기서 반복문을 돌리면서, 각자리 수가 4로 나눴을 때 0으로 안떨어지는지 확인

 - 여기서 중요한 점은 인덱스[0]은 빼주고, 가장 마지막도 빼줘야한단 사실!

4) 안떨어지면 4의 배수가 되기위해 몇자리가 필요한지 알아야하니 4-나머지

5) (4-나머지)들을 합산해준다.


😎오늘의 한줄평: 문제 속에 답이 있따-------!

 

 

 

 

728x90