728x90
문제
세로 길이 n, 가로 길이 m 인 2차원 배열이 있다.
두 점 A, B가 인접하다는 것은 배열에서 상하좌우로 붙어있는 것을 의미한다. 이 배열의 각 인덱스에 대해 인접한 인덱스에 자신과 같은 수가 있으면 1을, 없으면 0을 출력하여라.
단, 각 행의 왼쪽 끝 열과 오른쪽 끝 열은 서로 인접해있다.
입력
첫 줄에 n, m이 주어진다.
두 번째 줄부터 n개의 줄에 각 m개의 수가 주어진다.
(3 ≤ n, m ≤ 100, 1 ≤ 수열을 구성하는 수 ≤ n X m)
출력
n줄에 각 인덱스마다 인접한 인덱스에 같은 수가 있으면 1을, 없으면 0을 출력한다.
입력의 예 1
3 5
2 3 1 1 2
1 3 2 3 4
1 2 7 3 7
출력의 예 1
1 1 1 1 1
1 1 0 1 0
1 0 0 1 0
입력의 예 2
2 5
1 2 1 3 2
1 2 1 3 2
출력의 예 2
1 1 1 1 1
1 1 1 1 1
입력의 예 3
3 7
2 2 2 3 3 3 4
1 3 1 2 1 3 1
2 4 2 4 2 3 3
출력의 예 3
1 1 1 1 1 1 0
1 0 0 0 0 1 1
0 0 0 0 0 1 1
입력의 예 4
3 3
1 2 3
4 5 6
7 8 9
출력의 예 4
0 0 0
0 0 0
0 0 0
#코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
n, m = map(int, input().split())
getInfo = [list(map(int, input().split())) for _ in range(n)]
arr = [[-1 for _ in range(110)] for _ in range(110)]
for i in range(n): # 행
for j in range(m): # 열
arr[i+1][j] = getInfo[i][j]
for i in range(1, n+1): # 행
for j in range(m): # 열
tempLeft = j-1
tempRight = j+1
if j == 0:
tempLeft = m-1
if j == m-1:
tempRight = 0
# 상, 하, 좌, 우
if arr[i][j] == arr[i-1][j] or arr[i][j] == arr[i+1][j] or arr[i][j] == arr[i][tempLeft] or arr[i][j] == arr[i][tempRight]:
getInfo[i-1][j] = 1
else:
getInfo[i-1][j] = 0
for i in range(n): # 행
for j in range(m): # 열
print(getInfo[i][j], end=' ')
print()
|
cs |
반응형
'CS > 알고리즘_문제풀이(파이썬)' 카테고리의 다른 글
접시 (0) | 2021.05.24 |
---|---|
스택 구현하기 (0) | 2021.05.24 |
2차원 조회 (0) | 2021.05.23 |
1차원 조회 (0) | 2021.05.23 |
밀기 알고리즘 -- 파이썬 데크(deque) (0) | 2021.05.23 |