코테분석#7-1 늑대와 양(백준 16956)

정은경·2020년 3월 16일
0

알고리즘

목록 보기
21/125

방향이란 무엇인가?

  • 위/아래/왼쪽/오른쪽
  • BFS/DFS를 활용하는 문제
  • 2/3차원 배열
  • 5*5맵

상하좌우









문제


나의 풀이

R, C = [int(x) for x in input().split()]
dx, dy = [0, 1, 0, -1], [1, 0, -1, 0]
# 위로/오른쪽으로/아래로/왼쪽으로

ranch = [list(input()) for i in range(R)]

is_ok = True

for r in range(R):
    for c in range(C):
        if ranch[r][c] == 'W':
            for move in range(4):
                new_x, new_y = r+dx[move], c+dy[move]
                if new_x < 0 or new_x == R or new_y < 0 or new_y == C:
                    continue
                if ranch[new_x][new_y] == 'S':
                    is_ok = False


if is_ok:
    print(1)
    for r in range(R):
        for c in range(C):
            if ranch[r][c] not in 'SW':
                ranch[r][c] = 'D'

    for i in ranch:
        print(''.join(i))

else:
    print(0)

쌤's 풀이

  • 늑대옆에 바로 양이 있는 경우가 아니라면 울타리를 넣어라
  • 울타리 개수의 제한이 없는 문제
R, C = map(int, input().split())
M  = [list(input()) for i in range(R)]

dx, dy = [0,1,0,-1],[1,0,-1,0]

ck = False

for i in range(R):
	for j in range(C):
    	if M[i][j] == 'W':
        	for w in range(4):
            	ii, jj = i +dx[w], j+dy[w]
                if ii < 0 or ii == R or jj < 0 or jj == C:
                	continue
                if M[ii][jj] == 'S':
                	ck = True
if ck:
	print(0)
else:
	print(1)
	for i in range(R):
    	for j in range(R):
        	if M[i][j] not in 'SW':
            	M[i][j] = 'D'
for i in M:
	print(''.join(i))

느낀 점

  • dx,dy를 이용해서 위로/오른쪽으로/아래로/왼쪽으로
dx, dy = [0, 1, 0, -1], [1, 0, -1, 0]
# 위로/오른쪽으로/아래로/왼쪽으로
profile
#의식의흐름 #순간순간 #생각의스냅샷

0개의 댓글