목차
🫡 Overview
체감 난이도: ★☆☆☆☆
소요시간: 35분
문제 레벨: 실버4 / 문제 유형: 단순 구현
풀이 상태: 스스로 해결
추후: 완벽 이해
문제 링크
https://www.acmicpc.net/problem/31714
문제 해석
더보기
문제: 모든 학생들의 시야가 확보되도록 좌석 배치할 수 있는지 여부를 판단하기("YES" or "NO")
- 앞 좌석 (좌석 높이+ 키) < 나의 (좌석 높이+키)
<좌석 배치>
- N행 M열의 좌석이 있음.
<행 높이>
- 높이가 D부터 시작
- i(1,,,N) -> 높이가 D*i
나의 코드
행단위로 오름차순 정렬을 한 뒤, 문제 조건에 맞는지 체크한다.
- 문제 조건: 모든 학생에 대해서 같은 열의 앞 행 학생보다 키가 커야 된다.
더보기
# 입력 받기
N, M, D = list(map(int, input().split()))
h = [[-1]*(M+1)] # # N이랑 M이 1부터 시작할 수 있게 한다.
for _ in range(N):
h.append([-1]+list(map(int, input().split())))
def accumulate(h, D): # 높이 더해주기
for i in range(1,N+1):
for j in range(1,M+1):
h[i][j] += i*D
return h
def sort_by_row(h):
# 행 단위로 오름차순 정렬하기
for i in range(1, N + 1):
h[i].sort()
return h
def available(h):
# 각 열 단위로 앞 행의 모든 원소들이 나보다 작은지 체크하기
for j in range(1, M + 1):
for i in range(1, N):
if h[i][j] >= h[i+1][j]: # (i-1) 번째 행이
return False
return True
# print('\n'.join(map(str, h)))
h = accumulate(h, D)
h = sort_by_row(h)
result = available(h)
if result:
print("YES")
else:
print("NO")
배운 점/느낀 점
문제 티어 안보고 진짜 코딩 테스트라고 생각하고 풀었더니, 체감 난이도가 올라가는 것 같다.
앞으로 티어 안보고 풀어보는 연습을 해야겠다.
'Algorithm > 문제 풀이' 카테고리의 다른 글
[BoJ][Python] 17204 죽음의 게임 (0) | 2024.12.12 |
---|---|
[Python][BoJ] 점프왕 쩰리 (Large) (0) | 2024.12.04 |
[Python][프로그래머스] 압축 - 2018 KAKAO BLIND RECRUITMENT (0) | 2024.11.27 |
[카카오기출][Python] 표현 가능한 이진트리 (1) | 2024.10.05 |
[Python][카카오기출] 이모티콘 할인행사 (2) | 2024.10.02 |