링크 : https://www.acmicpc.net/problem/2578
- 문제
- 소요시간: 실패 후 성공
- 설계하기(접근방법)
1. 이중배열로 빙고와 사회자가 부르는 번호 리스트를 입력받는다.
2. 사회자가 부른 번호를 빙고번호에서 찾은 후, 'None'값으로 대체한다.
3. 빙고의 갯수를 검사하는 메서드를 매 횟수마다 돌려 빙고의 갯수가 3이상이면 현재 회차를 출력하고 종료한다.
- 코드(출력)
def checkBingo(array):
bingo_cnt = 0
for i in range(5):
if (array[i][0] == array[i][1] == array[i][2] == array[i][3] == array[i][4] == 'None'):
bingo_cnt += 1
for j in range(5):
if (array[0][j] == array[1][j] == array[2][j] == array[3][j] == array[4][j] == 'None'):
bingo_cnt += 1
if array[0][0] == array[1][1] == array[2][2] == array[3][3] == array[4][4] == 'None':
bingo_cnt += 1
if array[0][4] == array[1][3] == array[2][2] == array[3][1] == array[4][0] == 'None':
bingo_cnt += 1
return bingo_cnt
bingo_list = []
num_list = []
num_cnt = 0
breaker = False
for _ in range(5):
bingo_list.append(list(input().split()))
for _ in range(5):
num_list.append(list(input().split()))
for i in range(5):
for j in range(5):
bingo_num = num_list[i][j] # 사회자가 부르는 넘버
num_cnt += 1 # 몇번재 num 인지
for k in range(5): # 부른 숫자를 None으로 대체
for l in range(5):
if bingo_list[k][l] == bingo_num: # 리스트의 원소가 사회자가 부른 넘버와 같다면
bingo_list[k][l] = 'None'
if (checkBingo(bingo_list) >= 3): # 빙고가 3개이상이 되면
breaker = True
print(num_cnt)
break
if (breaker == True): # 이중 for문 탈출
break
- 얻어갈 부분
1. replace 메서드가 아직 어색하여 if,문으로 대체하였다.
2. 이중for문을 break하는 법을 배웠다.
3. 빙고의 갯수가 3개일때 break하는 것이 아닌 빙고가 2개->4개로 증가하는 경우의 수도 있음으로
범위를 잘 설정해야 한다.
'알고리즘(백준) > 구현' 카테고리의 다른 글
[알고리즘/구현] 1244번 : 스위치 켜고 끄기 - python (0) | 2023.03.21 |
---|---|
[알고리즘/구현] 4396번 : 지뢰 찾기 - python (0) | 2023.03.20 |
[알고리즘/구현] 1924 번 : 2007년 - python (0) | 2023.02.27 |
[알고리즘/구현] 10870번 : 피보나치 수열 - python (0) | 2023.02.27 |
[알고리즘/구현] 7568번 : 덩치 - python (0) | 2023.02.26 |