최대 1 분 소요

사용 언어: Python3

문제

스크린샷 2023-04-17 오후 3 09 06

풀이

내 풀이

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을 함께 사용해 간결하게 표현 가능


💛 개인 공부 기록용 블로그입니다. 👻

맨 위로 이동하기