For Programmer
SWEA 1240번 파이썬 문제풀이(단순 2진 암호코드) 본문
728x90
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV15FZuqAL4CFAYD
문제 설명이 참으로 이해하기 어렵다.. 또한 히든 케이스 예를들어) 암호코드가 처음7개가 일치하는 데도 불구하고 그 다음7개가 일치하지 않는 경우 다시 처음으로 돌아가 인덱스를 한개 증가시켜서 그다음 7개 부터 검사해야하는 방식으로 코드를 짜야하는 경우가 케이스에 있다. 이러한 예외케이스를 설명을 안해주니 찾기가 참으로 힘들었다.. 나머지는 쉽게 구현할 수 있었고 주석으로 달아놨다.
import sys
sys.stdin = open('input.txt', 'r')
def pw_code(binary):
if binary == '0001101':
return '0'
elif binary == '0011001':
return '1'
elif binary == '0010011':
return '2'
elif binary == '0111101':
return '3'
elif binary == '0100011':
return '4'
elif binary == '0110001':
return '5'
elif binary == '0101111':
return '6'
elif binary == '0111011':
return '7'
elif binary == '0110111':
return '8'
elif binary == '0001011':
return '9'
else:
return ''
T = int(input())
for tc in range(1, T + 1):
r, c = map(int, input().split())
check = False # 만약 암호줄이 발견되면 그 다음줄부턴 검사x
result = 0
for i in range(r):
temp = input()
index = 0 # 0~c-56 까지 검사
if temp.count('1') == 0: # 만약 암호줄이 0으로만 이루어져 있다면 다음 줄 검색
continue
while not check and index <= c - 56: # 아직 암호줄이 반견되지 않았고 index가 c -56이 되기 전까지 반복
s = index # 검사 시작인덱스를 설정
cnt, pw, code = 0, 0, 0 # 암호코드를 찾은 개수, 비밀번호, 암호코드
while s <= c - 7: # c - 7 번째 인덱스까지 검색
length_7 = temp[s:s + 7] # 7구간을 자른다.
num = pw_code(length_7) # 해당 구간과 일치하는 암호코드가 있는 지 확인
if num: # 있다면
if cnt % 2 == 0: # 해당 코드가 짝수 번째라면
code += (int(num) * 3)
else: # 홀수 번째라면
code += int(num)
s += 7 # 그 후 인덱스를 7개 늘려준다.
cnt += 1 # 찾은 암호코드 개수를 1개 증가
pw += int(num) # 비밀번호를 더해준다.
else: # 만약 없다면 바로 반복문 종료 후 다음 인덱스 부터 체킹해본다
break
if cnt == 8: # 만약 찾은 암호코드 개수가 8개라면
if code % 10 == 0: # 그 암호코드가 10의 배수라면
result = pw # 더한 비밀번호를 답으로 설정
check = True # 암호줄이 발견되었다면 의미이므로 더이상 검색x
index += 1 # 인덱스 1 증가
print(f'#{tc} {result}')
728x90
'코팅테스트 > 백준 문제 모음' 카테고리의 다른 글
백준 1967번 파이썬 문제풀이(트리와 지름) (0) | 2022.03.23 |
---|---|
백준 15681번 파이썬 문제풀이(트리와 쿼리) (0) | 2022.03.23 |
백준 11725번 파이썬 문제풀이(트리의 부모 찾기) (0) | 2022.03.23 |
백준 1726번 파이썬 문제풀이(로봇) (0) | 2022.03.22 |
SWEA 1952번 파이썬 문제풀이(수영장) (0) | 2022.03.22 |
Comments