구름 알고리즘 위클리 [1주차]
문제 (m, n)크기의 행렬과 elment(지뢰-*, 나머지-.)를 입력받아 . 주변의 지뢰 개수를 출력하기
코드
size=input()
m=int(size.split(" ")[0])
n=int(size.split(" ")[1])
store=[]
for row in range(0,n):
try:
drawing=input()#**...
if len(drawing)!=m:
raise(Exception)
tmp.append(list(drawing))
except Exception as e:
print("크기에 맞는 값을 입력하시오",e)
count=0
for i in range(len(tmp)):
for j in range(len(list(drawing))):
if tmp[i][j]!="*":
#내부
if (i!=0 and i!=n-1) and (j!=0 and j!=m-1):
tmp[i][j]=str([tmp[i-1][j-1],tmp[i-1][j],tmp[i-1][j+1],
tmp[i][j-1], tmp[i][j+1],
tmp[i+1][j-1],tmp[i+1][j],tmp[i+1][j+1]].count("*"))
#위 내부 .***.
elif i==0 and (j!=0 and j!=m-1):
tmp[i][j]=str([tmp[i][j-1], tmp[i][j+1],
tmp[i+1][j-1],tmp[i+1][j],tmp[i+1][j+1]].count("*"))
#아래 내부 .***.
elif i==n-1 and (j!=0 and j!=m-1):
tmp[i][j]=str([tmp[i-1][j-1],tmp[i-1][j],tmp[i-1][j+1],
tmp[i][j-1], tmp[i][j+1]].count("*"))
#왼쪽 가장자리
elif j==0:
#왼쪽위
if i==0:
tmp[i][j]=str([ tmp[i][j+1],
tmp[i-1][j],tmp[i-1][j+1]].count("*"))
#왼쪽 아래
elif i==n-1:
tmp[i][j]=str([tmp[i-1][j], tmp[i-1][j+1],
tmp[i][j+1]].count("*"))
#왼쪽 중간
else:
tmp[i][j]=str([tmp[i-1][j],tmp[i-1][j+1],
tmp[i][j+1],
tmp[i+1][j],tmp[i+1][j+1]].count("*"))
#오른쪽
elif j==m-1:
#오 위
if i==0:
tmp[i][j]=str([tmp[i][j-1]
,tmp[i+1][j-1],tmp[i+1][j]].count("*"))
#오 아래
elif i==n-1:
tmp[i][j]=str([tmp[i-1][j-1], tmp[i-1][j],
tmp[i][j-1] ].count("*"))
#오 중간
else:
tmp[i][j]=str([tmp[i-1][j-1],tmp[i-1][j],
tmp[i][j-1],
tmp[i+1][j-1],tmp[i+1][j]].count("*"))
for i in range(len(tmp)):
print("".join(tmp[i]))
코드 설명
1. 크기 (m,n)과 element 입력받기
만약 받은 크기보다 더 많은 수의 element가 들어왔다면 오류메세지 출력
size=input()
m=int(size.split(" ")[0])
n=int(size.split(" ")[1])
store=[]
for row in range(0,n):
try:
drawing=input()#**...
if len(drawing)!=m:
raise(Exception)
tmp.append(list(drawing))
except Exception as e:
print("크기에 맞는 값을 입력하시오",e)
경우를 나누어서 지뢰 개수를 계산하는 데 필요한 element만 가져옴
for i in range(len(tmp)):
print("".join(tmp[i]))
출력예시
입력
출력