문제 - 동맹휴업(Hartal) |
인기도: B
성공율: 높음
레벨: 2
난이도_하
각 정당을 동맹 휴업지수라는 h라는 양의 정수로 나타낼 수 있다. 이 동맹 휴업지수는 한 동맹 휴업과 다음 동맹 휴업 사이의 기간을 날짜 수로 표시한 값이다.
세 개의 정당이 있다고 생각해보자. 그리고 I번째 당의 동맹 휴업 지수를 hi라고 할 때 h1=3, h2=4, h3=8이라고 가정하자. N일(N=14)일 동안의 세 당의 행보를 시뮬레이션하면 다음과 같이 표시할 수 있다. 시뮬레이션은 항상 일요일에 시작하며 금요일이나 토요일에는 동맹 휴업이 없다.
요일 | 1 일 | 2 월 | 3 화 | 4 수 | 5 목 | 6 금 | 7 토 | 8 일 | 9 월 | 10 화 | 11 수 | 12 목 | 13 금 | 14 토 |
1번정당 |
|
| X |
|
| X |
|
| X |
|
| X |
|
|
2번정당 |
|
|
| X |
|
|
| X |
|
|
| X |
|
|
3번정당 |
|
|
|
|
|
|
| X |
|
|
|
|
|
|
동맹휴업 |
|
| 1 | 2 |
|
|
| 3 | 4 |
|
| 5 |
|
|
이 결과를 보면 14일 동안 정확하게 다섯 번의 동맹휴업(3,4,8,9,12)이 있음을 알 수 있다. 6일은 금요일이기 때문에 동맹휴업이 일어나지 않는다. 결국 2주 동안 근무 일수로 5일의 동맹휴업이 실시된다.
몇 정당의 동맹 휴업지수와, 어떤 정수 N이 주어졌을때, N일 가운데 동맹 휴업으로 인해 일을 하지 않는 근무 일수를 계산하라.
입력: 입력의 첫 번째 줄에는 입력될 테스트 케이스의 개수를 나타내는 하나의 정수 T가 들어있다. 각 테스트 케이스의 첫 번째 줄에는 한 개의 정수N(7<=N<=3650)이 들어 있으며 시뮬레이션을 돌릴 기간(날 수)을 나타낸다. 그 다음 줄에는 정당의 개수를 나타내는 정수P(1<=P<=100)가 들어간다. 그 다음부터 시작하는 P개의 줄 가운데 I번째 줄(1<=i<=P)에는 I번째 정당의 동맹 휴업 지수를 나타내는 양의 정수 hi(7의 배수는 아님)가 들어있다.
출력 : 각 테스트 케이스에 대해 손실된 근무 일수를 한줄에 하나씩 출력한다.
입력 예 출력 예
=> =>
2 5
14 15
3
3
4
8
100
4
12
15
25
40
http://www.programming-challenges.com/pg.php?page=downloadproblem&probid=110203&format=html
반성... |
- 문제를 여러번 읽었는데도 불구하고 코드 작성할 때, 금요일 뿐만 아니라 토요일에도 동맹휴업이 없다는 것을 잊어버려 문제가 생겼는데도 한참동안 원인을 찾지 못 하였다.
- loop문의 인덱스를 잘못 계산하여 한참을 해맸다. → 연습장에 기대 되는 값을 미리 적어두고 디버깅 값들과 비교하는게 좋을 것 같다.
코드 |
'Algorithm > 기타' 카테고리의 다른 글
Tree - 난이도(하) (0) | 2014.04.07 |
---|---|
[Programming Challenges] 3n+1 - 난이도(하) (0) | 2014.04.07 |
점수를 이용한 이름 정렬 - 난이도(하) (0) | 2014.03.30 |
행렬의 곱 - 난이도(하) (0) | 2014.03.30 |
고과평가 - 난이도(하) (0) | 2014.03.30 |