Search

이차배열5_문제07_퍼즐게임

대분류
STEP08 이차리스트
소분류
이차리스트5_문제

영상

문제

''' [문제] 철수는 게임을 만들고 있다. game리스트는 이차원으로 되어있다. game리스트 안에 block리스트의 숫자를 채워 넣는 게임이다. 리스트의 값1은 block이 차 있는 것을 의미한다. 리스트의 값0은 block이 비어있는 것을 의미한다. [조건1] block은 이번에 제시된 모양이다. block의 모양을 game 리스트에 넣을 수 있다면 채워 넣고, 넣을 수 없다면 "gameover"를 출력하시오. [조건2] block을 채워 넣었을 때 가로로 1이 연속 5개이거나, 세로로 1이 연속 5개이면 그 줄은 전부 숫자 2로 변경하시오. [정답] ''' game = [ [0,1,0,1,0], [1,1,0,1,1], [0,1,1,1,1], [1,1,0,1,0], [0,0,0,0,0] ] block = [ [0,1], [1,1] ]
Python
복사

해설

''' [문제] 철수는 게임을 만들고 있다. game리스트는 이차원으로 되어있다. game리스트 안에 block리스트의 숫자를 채워 넣는 게임이다. 리스트의 값1은 block이 차 있는 것을 의미한다. 리스트의 값0은 block이 비어있는 것을 의미한다. [조건1] block은 이번에 제시된 모양이다. block의 모양을 game 리스트에 넣을 수 있다면 채워 넣고, 넣을 수 없다면 "gameover"를 출력하시오. [조건2] block을 채워 넣었을 때 가로로 1이 연속 5개이거나, 세로로 1이 연속 5개이면 그 줄은 전부 숫자 2로 변경하시오. [정답] ''' game = [ [0,1,0,1,0], [1,1,0,1,1], [0,1,1,1,1], [1,1,0,1,0], [0,0,0,0,0] ] block = [ [0,1], [1,1] ] y = 0 x = 0 for i in range(len(game) - 1): for j in range(len(game[i]) - 1): count = 0 if game[i][j + 1] == 0: count += 1 if game[i + 1][j] == 0: count += 1 if game[i + 1][j + 1] == 0: count += 1 if count == 3: y = i x = j break print(y, x) game[y][x + 1] = block[0][1] game[y + 1][x] = block[1][0] game[y + 1][x + 1] = block[1][1] print() for i in range(len(game)): print(game[i]) print() temp = [] for i in range(len(game)): unit = [] for j in range(len(game[i])): unit.append(game[i][j]) temp.append(unit) # 가로검사 for i in range(len(game)): count = 0 for j in range(len(game)): if game[i][j] == 1: count += 1 if count == 5: for j in range(len(game)): temp[i][j] = 2 # 세로검사 for i in range(len(game)): count = 0 for j in range(len(game)): if game[j][i] == 1: count += 1 if count == 5: for j in range(len(game)): temp[j][i] = 2 for i in range(len(game)): print(game[i]) print() for i in range(len(temp)): print(temp[i]) print()
Python
복사