본문 바로가기

Algorithm/기타

[Programming Challenges]동맹 휴업(Hartals)


 문제 - 동맹휴업(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