https://www.acmicpc.net/problem/2578
1. 난이도 실버 4
2. 내가 작성한 코드
구현 이 친구 문제를 풀 때 생각보다 시간이 오래걸린다.
아직 훈련이 덜 되어 있나 봄
bingo = [list(map(int, input().split())) for _ in range(5)] #최초의 빙고판
answer = []
for i in range(5): #answer을 1차원 배열로 입력 받기
for j in input().split():
answer.append(int(j))
def check():
cnt=0
for i in range(5): #가로 빙고 확인
if bingo[i][:] == ["X","X","X","X","X"]:
cnt+=1
for i in range(5): #세로 빙고 확인
if bingo[0][i] == "X" and bingo[1][i] == "X" and bingo[2][i] == "X" and bingo[3][i] == "X" and bingo[4][i] == "X":
cnt+=1
#대각선 빙고 확인1
if bingo[0][0] == "X" and bingo[1][1] == "X" and bingo[2][2] == "X" and bingo[3][3] == "X" and bingo[4][4] == "X":
cnt+=1
#대각선 빙고 확인2
if bingo[0][4] == "X" and bingo[1][3] == "X" and bingo[2][2] == "X" and bingo[3][1] == "X" and bingo[4][0] == "X":
cnt+=1
return cnt
for i in range(25):
for k in range(5):
for m in range(5): #사회자가 부른 숫자가 있으면 X표시
if bingo[k][m] == answer[i]:
bingo[k][m] = "X"
if check() >= 3: #선의 개수가 3개 이상이면 정답 외치기
print(i+1)
exit()
메모
1. 빙고가 동시에 될 경우의 수를 빼고 문제를 풀어서 틀렸었다. check가 모두 x표친 선의 개수인데, 빙고가 됨과 동시에 3개 이상일 수도 있다.
2. 나는 answer과 bingo에 있는 수가 같은 경우 X를 쳐 줬는데 0으로 대체한 후 count나 sum 함수를 이용하면 더 쉽게 풀 수 있었을 것 같다.
'🔅코딩테스트 공부🔅 > ❗백준' 카테고리의 다른 글
[백준] 1244번 스위치 켜고 끄기(python) (0) | 2023.04.15 |
---|---|
[백준] 4396번 지뢰 찾기(python) (0) | 2023.04.14 |
[백준] 20546번 🐜 기적의 매매법 🐜(python) (0) | 2023.04.13 |
[백준] 14467번 소가 길을 건너간 이유1(python) (0) | 2023.04.12 |
[백준] 21918번 전구(python) (0) | 2023.04.12 |
댓글