728x90
Overview
- 체감 난이도: ★☆☆☆☆
- 문제 레벨: Silver 4
- 문제 유형: 그리디, 정렬
- 풀이 상태: 답안참고 / 스스로 해결
- 추후: 다시 풀어보기 / 간단 복습 / 완벽 이해
[문제]
https://www.acmicpc.net/problem/31714
[코드]
처음 풀이
n, m, d = map(int, input().split()) # 행, 열, 높이 차이
# (앞줄) 좌석 높이 + 키 < (뒷줄) 좌석 높이 + 키
# 주어진 조건에 맞게 모든 학생을 원하는 행의 좌석에 배치할 수 있는지 여부 출력
arr = []
for i in range(n):
# i+1줄, i행에 앉고자 하는 학생 m명의 키
height = list(map(int, input().split()))
for j in range(m):
height[j] += d * (i + 1)
height.sort()
arr.append(height)
def chk():
for i in range(m):
for j in range(n - 1):
if arr[j][i] >= arr[j + 1][i]:
return False
return True
if chk():
print("YES")
else:
print("NO")
간략하게 수정한 코드(리스트 컴프리헨션)
# (앞줄) 좌석 높이 + 키 < (뒷줄) 좌석 높이 + 키
# 주어진 조건에 맞게 모든 학생을 원하는 행의 좌석에 배치할 수 있는지 여부 출력
n, m, d = map(int, input().split()) # 행, 열, 높이 차이
# i+1줄, i행에 앉고자 하는 학생 m명의 키 / 키 + 단차 / 정렬
height = [sorted(h + d * (i + 1)
for h in map(int, input().split()))
for i in range(n)]
chk = all(height[i][j] < height[i+1][j]
for j in range(m)
for i in range(n-1))
print("YES" if chk else "NO")
[배운 점]
python all() 함수
: 인자로 받은 모든 요소가 참(True)이면 참(True)을 반환하고, 하나라도 거짓(False)이면 거짓(False)을 반환한다.
- all 함수는 인자로 반복 가능한 (iterable) 자료형을 받는다. (리스트, 튜플, 딕셔너리 등과 같이 for문에서 사용 가능한 자료형)
- 인자로 받은 요소가 비어있는 경우 True를 반환한다.
🤔 언제 사용할까?
→ 어떤 리스트에서 특정 조건을 체크해야 할 경우
반응형
'🚩 Coding Test > Baekjoon' 카테고리의 다른 글
[BOJ][Python] 4963 섬의 개수 (0) | 2024.12.05 |
---|---|
[BOJ][Python] 29717 슬라임 잡고 레벨 업! (0) | 2024.12.04 |
[BOJ][Python] Greedy / 1541 잃어버린 괄호 (0) | 2024.11.06 |
[BOJ][Python] 1149 RGB거리 (0) | 2024.11.01 |
[BOJ][Python] 1904 01 타일 (0) | 2024.10.31 |