[김태원 알고리즘] 봉우리
사용 언어: Python3
문제
풀이
내 풀이
N = int(input())
board = [[int(x) for x in ('0 '+input()+' 0').split()] for _ in range(N)]
board.insert(0, [0]*(N+2))
board.append([0]*(N+2))
dx, dy = [0,-1,0,1], [1,0,-1,0]
ans = 0
for i in range(1,N+1):
for j in range(1,N+1):
ck = True
for w in range(4):
xx, yy = i + dx[w], j + dy[w]
if board[i][j] < board[xx][yy]:
ck = False
if ck:
ans += 1
print(ans)
- 성공!
다른 사람 풀이
N = int(input())
board = [list(map(int, input().split())) for _ in range(N)]
board.insert(0, [0]*N)
board.append([0]*N)
for row in board: # 각 행의 양 끝에 0 추가
row.insert(0, 0)
row.append(0)
dx, dy = [0,-1,0,1], [1,0,-1,0]
ans = 0
for i in range(1,N+1):
for j in range(1,N+1):
# ✅ all(): 내부 요소가 모두 참일 때만 참
if all(board[i][j] > board[i+dx[w]][j+dy[w]] for w in range(4)): # ✅
ans += 1
print(ans)
all()
메서드 숙지!- 인자로 넘어온 자료 구조 내의 모든 요소가 참일 때만 True를 반환한다.
all([True, True, True, True, True]) # True all([True, False, True, True, True]) # False all(num > 0 for num in [1, 2, 4, 8]) # True
all()
과 list comprehension을 함께 사용해 간결하게 표현 가능
- 인자로 넘어온 자료 구조 내의 모든 요소가 참일 때만 True를 반환한다.
💛 개인 공부 기록용 블로그입니다. 👻