문제
- 주어진 2차원 리스트에서 현재 값의 상하좌우를 비교해 현재 값이 가장 큰 경우 봉오리라고 한다.
- 해당 2차원 리스트에 봉오리의 총갯수를 구하라
- 이때 2차원 리스트의 가장자리는 0이라고 한다.
문제 풀이
#봉우리
import sys
#sys.stdin = open("input.txt", "r")
n = int(input())
a = [list(map(int,input().split())) for _ in range(n)]
a.insert(0, [0]*n)
a.append([0]*n)
for i in a:
i.insert(0, 0)
i.append(0)
cnt = 0
dx = [-1,1,0,0]
dy = [0,0,-1,1]
for i in range(1,n+1):
for j in range(1, n+1):
if all(a[i][j] > a[i+dx[k]][j+dy[k]] for k in range(4)):
cnt += 1
print(cnt)
- insert( )와 append( )를 사용해서 가장자리를 0으로 만들어 준다. (위 아래는 해당 갯수만큼 그냥 추가 해주면 됨)
- 2차원 리스트이기 때문에 a로 돌면 행을 기준으로 돌게 된다. 그래서 for 문으로 insert( ), append( )를 하게 되면 앞 뒤로 추가하게 되는 것이다
- dx, dy라는 변수를 준비해 상하좌우를 맞춰 준비해준다.
- all( ) 함수를 사용해 해당 봉우리가 상하좌우보다 큰 경우 cnt를 증가시켜준다.
'자료구조와 알고리즘 > 개인적인 코딩테스트 관련 풀이' 카테고리의 다른 글
[탐색][시뮬레이션] - 격자판 회문수(2차원 List) (0) | 2022.07.07 |
---|---|
[탐색][시뮬레이션] - 스토쿠(2차원 List) (0) | 2022.07.07 |
[탐색][시뮬레이션] - 곶감(2차원 List) (0) | 2022.07.06 |
[탐색][시뮬레이션] - 사과나무(2차원 List) (0) | 2022.07.06 |
[탐색][시뮬레이션] - 격자판 최대합(2차원 List) (0) | 2022.07.06 |