ps:problems:boj:31408
당직 근무표
ps | |
---|---|
링크 | acmicpc.net/… |
출처 | BOJ |
문제 번호 | 31408 |
문제명 | 당직 근무표 |
레벨 | 브론즈 1 |
시간복잡도 | O(n) |
인풋사이즈 | n<=100,000 |
사용한 언어 | Python 3.11 |
제출기록 | 40428KB / 84ms |
최고기록 | 84ms |
해결날짜 | 2024/02/19 |
출처 |
풀이
- ceil(N/2) 번 이상 당직을 서는 병사가 있으면, 이틀 연속으로 근무하는 것을 피할수 없다. 아무도 ceil(N/2) 번 이상 당직을 서지 않는다면, 아무도 이틀 연속 근무를 하지 않도록 배치가 가능하다.
- 가장 근무일수가 많은 병사의 근무일수가 ceil(N/2) 이상인지 확인하면 끝. 시간복잡도는 O(n)
코드
"""Solution code for "BOJ 31408. 당직 근무표".
- Problem link: https://www.acmicpc.net/problem/31408
- Solution link: http://www.teferi.net/ps/problems/boj/31408
"""
import collections
def main():
N = int(input())
a = input().split()
is_possible = max(collections.Counter(a).values()) <= (N + 1) // 2
print('YES' if is_possible else 'NO')
if __name__ == '__main__':
main()
ps/problems/boj/31408.txt · 마지막으로 수정됨: 2024/03/05 15:04 저자 teferi
토론