SWEA 14195微生物観察
SWEA 14195微生物観察
質問する
https://swexpertacademy.com/main/code/userProblem/userProblemDetail.do?contestProbId=AX_Pn1I6fBQDFARi
に答える
現在のidxのvalueをAとBの2つの値に分け、各AリストとBリストに結果を追加します.
コード#コード#
import sys
sys.stdin = open('input.txt')
def dfs(start):
global temp
global visited
global cnt
visited[start[0]][start[1]] = 1
cnt += 1
if cnt > temp:
temp = cnt
for i in range(4):
nr = start[0] + d[i][0]
nc = start[1] + d[i][1]
if 0 <= nr < N and 0 <= nc < M and visited[nr][nc] != 1 and arr[start[0]][start[1]] == arr[nr][nc]: # 기존과 같을 때만 dfs를 순회
dfs([nr,nc])
d = [(-1,0),(1,0),(0,-1),(0,1)]
T = int(input())
for tc in range(T):
N, M = map(int, input().split())
arr = [list(list(input())) for _ in range(N)]
visited = [[0]*M for _ in range(N)]
A = [0] # max 를 사용하기 위해 리스트의 초기값에 0을 넣어줌
B = [0]
for i in range(N):
for j in range(M):
temp = 0
if arr[i][j] == 'A' and visited[i][j] != 1: # A일 때는 dfs 순회 후 A 배열에 추가
cnt = 0
dfs([i,j])
A.append(temp)
elif arr[i][j] == 'B' and visited[i][j] != 1: # B일 때는 dfs 순회 후 B 배열에 추가
cnt = 0
dfs([i, j])
B.append(temp)
elif arr[i][j] =='_':
visited[i][j] = 1
print(f'#{tc+1} {len(A)-1} {len(B)-1} {max(max(A),max(B))}') # 길이와 최댓값을 구해서 출력
結果
maxで最大値を求めると、リストが空であることを考慮していなかったため、実行時エラーが発生しました.そこで、この部分を修正するには、まずリストに0を入れてから始めます.
Reference
この問題について(SWEA 14195微生物観察), 我々は、より多くの情報をここで見つけました
https://velog.io/@shawnk123/SWEA-14195-미생물-관찰
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
import sys
sys.stdin = open('input.txt')
def dfs(start):
global temp
global visited
global cnt
visited[start[0]][start[1]] = 1
cnt += 1
if cnt > temp:
temp = cnt
for i in range(4):
nr = start[0] + d[i][0]
nc = start[1] + d[i][1]
if 0 <= nr < N and 0 <= nc < M and visited[nr][nc] != 1 and arr[start[0]][start[1]] == arr[nr][nc]: # 기존과 같을 때만 dfs를 순회
dfs([nr,nc])
d = [(-1,0),(1,0),(0,-1),(0,1)]
T = int(input())
for tc in range(T):
N, M = map(int, input().split())
arr = [list(list(input())) for _ in range(N)]
visited = [[0]*M for _ in range(N)]
A = [0] # max 를 사용하기 위해 리스트의 초기값에 0을 넣어줌
B = [0]
for i in range(N):
for j in range(M):
temp = 0
if arr[i][j] == 'A' and visited[i][j] != 1: # A일 때는 dfs 순회 후 A 배열에 추가
cnt = 0
dfs([i,j])
A.append(temp)
elif arr[i][j] == 'B' and visited[i][j] != 1: # B일 때는 dfs 순회 후 B 배열에 추가
cnt = 0
dfs([i, j])
B.append(temp)
elif arr[i][j] =='_':
visited[i][j] = 1
print(f'#{tc+1} {len(A)-1} {len(B)-1} {max(max(A),max(B))}') # 길이와 최댓값을 구해서 출력
Reference
この問題について(SWEA 14195微生物観察), 我々は、より多くの情報をここで見つけました https://velog.io/@shawnk123/SWEA-14195-미생물-관찰テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol