[Python] all() 함수

유얌얌·2024년 7월 25일

알고리즘

목록 보기
15/25

all()

iterable한 모든 객체를 인자로 받음
튜플, 리스트, 이터레이터, 제너레이터 등..
하나라도 거짓일 시 False를 반환 ( 모든것이 참이여야 True반환 )

관련 문제

주변 상하좌우보다 더 높은 수를 가지고 있으면 봉우리이다.
봉우리는 몇 개?

# 3-8. 봉우리

n = int(input())
map = [list(map(int, input().split())) for _ in range(n)]
cnt = 0

# 1. 첫번째 방법
# 주변 탐색
# r = [-1, 0, 1, 0]
# c = [0, 1, 0, -1]
#
# for i in range(n):
#     for j in range(n):
#         for q in range(4):
#             ni = i + r[q]
#             nc = j + c[q]
#             if 0 <= ni < n and 0 <= nc < n:
#                 if map[i][j] <= map[ni][nc]:
#                     break    # 옆이 더 크면 봉우리 X
#         else:
#             cnt += 1     # break 가 한 번도 없었으면 봉우리
#
#
# print(cnt)

# 2. 테두리 형성, all함수 사용
map.insert(0, [0]*n)
map.append([0]*n)

for i in range(n+2):
    map[i].insert(0, 0)
    map[i].append(0)

# 순회
dx = [-1, 0, 1, 0]
dy = [0, 1, 0, -1]

for i in range(1, n+1):
    for j in range(1, n+1):
        if all(map[i][j] > map[i+dx[k]][j+dy[k]] for k in range(4)):   
        # all 함수 : 안에 조건문이 모두 True여야 True
            cnt += 1

print(cnt)

이렇게 제너레이터 표현식과 함께 쓰일 수 있다.

      if all(map[i][j] > map[i+dx[k]][j+dy[k]] for k in range(4)):   
profile
조금씩이라도 꾸준하게

0개의 댓글