[문제]
https://www.acmicpc.net/problem/2596
[풀이]
병현이가 보낸 문자를 6자씩 끊어 리스트 s_li에 저장하고 둘 사이의 약속은 리스트 promise에 저장한다.
3중 중첩 반복문으로 병현이가 보낸 문자 s_li를 기준으로 두고 promise와 차례대로 한 문자씩 비교하면서 각 자리의 문자가 일치할 경우 cnt가 1 증가한다.
병현이가 문자를 제대로 보냈을 경우와 한 자만 틀렸을 경우(cnt >= 5)에는 해당 문자를 초기화한 correct 문자열에 추가해주었다. 만약 기준 s_li 요소와 promise의 모든 요소를 비교했을 때 다 두 자 이상 틀렸을 경우 (incorrect == len(promise)) 해당 문자의 index+1을 반환하고 종료한다.
[코드]
if __name__ == '__main__':
n = int(input())
s = input()
s_li = []
for i in range(0, n * 6, 6):
s_li.append(s[i: i + 6])
promise = ['000000', '001111', '010011', '011100', '100110', '101001', '110101', '111010']
correct = ''
incorrect = 0
for i in s_li:
incorrect = 0
for j in promise:
cnt = 0 # 맞은 개수
for k in range(6):
if i[k] == j[k]:
cnt += 1
if cnt >= 5: # 똑같거나 한 자만 다른 경우
correct += chr(promise.index(j) + 65)
break
else: # 두 자 이상 다른 경우
incorrect += 1
if incorrect == len(promise):
print(s_li.index(i) + 1)
quit()
print(correct)
'문제풀이 > BOJ' 카테고리의 다른 글
[Python] BOJ/백준 2037번 문자메시지 (0) | 2021.06.14 |
---|---|
[Python] BOJ/백준 1362번 펫 (0) | 2021.06.14 |
[Python] BOJ/백준 2587번 대표값2 (0) | 2021.06.12 |
[Python] BOJ/백준 2592번 대표값 (0) | 2021.06.12 |
[Python] BOJ/백준 1157번 단어 공부 (0) | 2021.06.12 |