https://www.acmicpc.net/problem/1816
1816번: 암호 키
현대 사회에서 통용되고 있는 많은 종류의 암호 시스템에서는, 매우 큰 소수의 곱으로 만들어진 수를 암호 키로 이용하는 경우가 많다. 현실적으로 매우 큰 수를 빠른 시간 내에 소인수분해하는
www.acmicpc.net
문제
한별이는 사흘 동안의 연속 밤샘 중에 랩실에서 잠이 들었다. 일어나 보니 랩실에는 아무도 없고, 바닥에는 자기 전에 보고 있던 논문들이 흩어져 있었다. 한별이는 이런 상황에서 따라야 하는 매뉴얼을 기억해냈고, 아래는 그 내용이다.
안전한 랩실 수면을 위한 지침서
- 혼자 있다면 랩실에서 자면 안 됩니다. 자는 사람을 혼자 두고 자리를 비우지 마십시오.
- 만약 일어났을 때 랩실에 혼자만 있다면, 바닥에 있는 장의 논문을 아래 지침에 따라 정리하십시오.
- 바닥에 있는 논문을 전부 주워서 페이지 번호를 확인하십시오. 중복된 페이지가 있을 수 있지만 무시하셔도 좋습니다.
- 논문의 첫 페이지 번호는 1이고, 마지막 페이지는 입니다.
- 1부터 까지의 페이지 번호에서 빠진 번호가 있어서는 안 됩니다. 만약 빠진 페이지가 존재한다면 랩실에 있는 프린터로 해당하는 페이지를 인쇄해야 합니다.
- 연속된 번호의 장의 페이지를 인쇄하기 위해서는 만큼의 잉크를 사용합니다.
- 잉크를 최대한 절약하세요. 잉크를 아끼기 위해서라면 잃어버리지 않은 페이지를 인쇄해도 괜찮습니다.
- 인쇄를 모두 마치고 빠진 페이지가 없는 것이 확실하다면 바로 랩실을 떠나십시오.
- 랩실을 나가고 문을 닫기 전까지 누군가가 당신의 이름을 부르더라도 절대 뒤돌아보거나 대답하면 안 됩니다.
방금 잠에서 깨 비몽사몽인 한별이는 복잡한 계산은 할 수 없는 상태다! 여러분이 한별이가 사용해야 하는 잉크의 양의 최솟값을 대신 구해주자.
입력
첫 줄에 과 이 주어진다. N은 논문의 마지막 페이지 번호이고, 은 바닥에 흩어진 논문의 장수이다. (1≤
다. 두 번째 줄에 바닥에 흩어진 논문의 페이지 번호를 나타내는 이하의 양의 정수가 개 주어진다.
출력
한별이가 사용해야 하는 잉크의 양의 최솟값을 출력한다.
내 풀이
# 31120kb 52ms
n, m = map(int, input().split())
pages = sorted(list(map(int, input().split())))
no_page = []
for page in range(1,n+1):
if page not in pages:
no_page.append(page)
last = 0
ink = 0
for i in no_page:
if last:
ink += min(7,(i-last)*2)
else:
ink += 7
last = i
print(ink)
'파이썬 알고리즘 연습' 카테고리의 다른 글
[Python | 백준 1449번] 수리공 항승 (0) | 2024.03.26 |
---|---|
[Python | 백준 5445번] 최고의 피자 (0) | 2024.03.26 |
[Python | 백준 1448번] 삼각형 만들기 (0) | 2024.03.26 |
[Python | 백준 14235번] 크리스마스 선물 (0) | 2024.03.26 |
[Python | 백준 1213번] 팰린드롬 만들기 (0) | 2024.03.21 |