동맹 휴업 (Hartal)

Programming/Algorithm 2010. 9. 3. 14:49

방글라데시의 정당들은 자신의 세를 과시하기 위해 정기적인 동맹 휴업(파업)을 추진하는데, 이 동맹 휴업은 경제에 상당한 피해를 끼칠 수 있다. 이 문제에서는 각 당을 동맹 휴업 지수(hartal parameter)라고 부르는 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        
 2 정당                   X    
 3 정당               X            
 휴업      1            5    
 
이 결과를 보면 14일 동안 정확하게 다섯 번의 동맹 휴업(3,4,8,9,12일)이 있음을 알 수 있다. 6일은 금요일이기 때문에 동맹 휴업이 일어나지 않는다. 결국 2주 동안 근무 일수로 5일의 동맹 휴업이 실시된다.

몇 정당의 동맹 휴업 지수와, 어떤 정수 N이 주어졌을 때, N일 가운데 동맹 휴업으로 인해 일을 하지 않은 근무 일수를 계산하라.

입력

입력의 첫번째 줄에는 입력될 테스트 케이스의 개수를 나타내는 하나의 정수 T가 들어있다. 각 테스트 케이스의 첫번째 줄에는 한 개의 정수N(7<=N<=3,650)이 들어있으며 시뮬레이션을 돌릴 기간(날 수)을 나타낸다. 그 다음 줄에는 정당의 개수를 나타내는 정수 P(1<=P<=100)이 들어간다. 그 다음부터 시작하는 P개의 줄 가운데 i번째 줄(1<=i<=P)에는 i번째 정당의 동맹 휴업 지수를 나타내는 양의 정수 hi(7의 배수는 아님)가 들어있다.

출력

각 테스트 케이스에 대해 손실된 근무 일수를 한 줄에 하나씩 출력한다.

입력 예

2
14
3
3
4
8
100
4
12
15
25
40

출력 예

5
15


역시 문제의 풀이보다 문제의 이해가 어려웠던 문제 ㅡㅡ ;;
그러나 막상 알면 쉽다. 이 문제는 해당 시뮬레이션 기간동안 그냥 금,토를 제외한 휴업날을 카운트만하면 된다.

'Programming > Algorithm' 카테고리의 다른 글

ACM-ICPC 2009년도 기출 _ Candy War  (0) 2010.10.01
암호 깨기 (Crypt Kicker)  (0) 2010.09.30
포커 패(Poker Hands)  (0) 2010.09.01
유쾌한 점퍼(Jolly Jumpers)  (0) 2010.08.31
호주식 투표법(Australian Voting)  (0) 2010.08.27

포커 패(Poker Hands)

Programming/Algorithm 2010. 9. 1. 21:19


포커용 카드는 52개의 카드로 이루어진다. 각 카는 클럽, 다이아몬드, 하트, 스페이드 ( 입력데이터에서는 C,D,H,S 로 표기 ) 의 값을 갖는다. 점수를 매길 때 위에 열거한 순서대로 등급이 매겨지며 2가 가장 낮고 에이스가 가장 높다. 무늬는 값에 영향을 끼치지 않는다.

포커 패는 다섯 장의 카드로 구성되며 다음과 같은 순서대로 등급이 매겨진다.

하이 카드 : 아래에 있는 것 가운데 어떤 범주에도 속하지 않는 패는 그 중 가장 높은 카드의 값에 따라 등급이 매겨진다. 가장 높은 카드의 값이 같으면 그 다음 카드, 그 다음 카드도 같으면 그 다음 카드, 이런 식으로 등급이 매겨진다.

원 페어 : 다섯 장의 카드 가운데 두 장이 같은 경우. 같은 원 페어끼리 맞붙는 경우에는 더 높은 값을 가지는 원 페어 패에 더 높은 등급이 매겨진다. 값까지 같은 경우에는 나머지 카드의 값에 의해 더 높은 패가 결정된다.

투 페어 : 두 쌍의 카드가 같은 값을 가지는 경우, 투 페어끼리 맞붙는 경우에는 그 중 더 높은 페어의 값에 의해 더 높은 등급이 매겨진다. 두 쌍의 값이 모두 같으면 남은 카드에 의해 더 높은 패가 결정된다.

쓰리 카드 : 다섯장 가운데 세 장이 같은 값을 가지는 경우. 쓰리 카드끼리 맞붙는 경우에는 세장의 같은 값을 가지는 카드의 값에 의해 더 높은 패가 결정된다.

스트레이트: 다섯 장의 카드가 연속적인 값을 가지는 경우. 스트레이트끼리 맞붙을 경우에는 가장 높은 카드에 의해 더 높은 패가 결정된다.

플러시 : 다섯 장의 카드의 무늬가 모두 같은 경우, 플러시끼리 맞붙을 경우에는 하이 카드의 규칙에 따라서 더 높은 패가 결정된다.

풀 하우스 : 세 장의 카드가 같은 값을 가지고 나머지 두 장의 카드가 같은 값을 가지는 경우. 같은 값을 가지는 세장의 카드의 우열에 의해 더 높은 패가 결정된다.

포 카드 : 네 장의 카드가 같은 값을 가지는 경우. 포카드끼리 맞붙는 경우에는 네 장의 같은 값을 가지는 카드의 값에 의해 더 높은 패가 결정된다.

스트레이트 플러시 : 다섯 장의 카드가 무늬가 같으면서 모두 연속적인 값을 가지는 경우. 패에 있는 것 중 가장 높은 카드에 의해 더 높은 패가 결정된다.

몇 쌍의 포커패를 비교, 어느쪽이 이겼는지 아니면 무승부인지 알아내자.

입력

입력 파일은 여러 줄로 구성되며 각 줄에는 열 장의 카드를 나타내는 값이 들어간다. 앞에 있는 다섯 장의 카드는 "Black"이라는 참가자의 카드고 뒤에 있는 다섯장의 카드는 "White"라는 참가자의 카드다.

출력

입력된 각 줄에 대해 다음 중 한 가지가 들어있는 행을 출력한다.

Black wins.
White wins.
Tie.

입력 예

2H 3D 5S 9C KD 2C 3H 4S 8C AH
2H 4S 4C 2D 4H 2S 8S AS QS 3S
2H 3D 5S 9C KD 2C 3H 4S 8C KH
2H 3D 5S 9C KD 2D 3H 5C 9S KH

출력 예

White wins.
Black wins.
Tie.
Tie.

포커를 몰라서 이거 입력 예를 문자로 봐도 잘 모르겠다..;;
책의 출력예가 틀린 것 같아 고쳤다. 4개의 답이 맞는지 확인해 주시기 바란다.
예를 들어, 첫번째 게임이 책에선 Tie라고 나와있었는데, 두 패다 하이 카드고 white에게 A패가 있으므로 white가 승리하는게 맞는 것으로 보인다.


'Programming > Algorithm' 카테고리의 다른 글

ACM-ICPC 2009년도 기출 _ Candy War  (0) 2010.10.01
암호 깨기 (Crypt Kicker)  (0) 2010.09.30
동맹 휴업 (Hartal)  (0) 2010.09.03
유쾌한 점퍼(Jolly Jumpers)  (0) 2010.08.31
호주식 투표법(Australian Voting)  (0) 2010.08.27

유쾌한 점퍼(Jolly Jumpers)

Programming/Algorithm 2010. 8. 31. 16:32


n개의 정수(n>0)로 이루어진 수열에 대해 서로 인접해 있는 두 수의 차가 1에서 n-1까지의 값을 모두 가지면 그 수열을 유쾌한 점퍼라고 부른다. 예를들어 다음과 같은 수열에서

1 4 2 3

앞 뒤에 있는 숫자 차의 절대 값이 각각 3,2,1이므로 이 수열은 유쾌한 점퍼가 된다. 어떤 수열이 유쾌한 점퍼인지 판단할 수 있는 프로그램을 작성하라.

입력

각 줄 맨 앞에는 3,000이하의 정수가 있으며 그 뒤에는 수열을 나타내는 n개의 정수가 입력된다.

출력

입력된 각 줄에 대해 'jolly'또는 'Not jolly'를 한 줄씩 출력한다.

입력 예
4  1 4 2 3
5  1 4 2 -1 6

출력 예

Jolly
Not jolly


 

'Programming > Algorithm' 카테고리의 다른 글

ACM-ICPC 2009년도 기출 _ Candy War  (0) 2010.10.01
암호 깨기 (Crypt Kicker)  (0) 2010.09.30
동맹 휴업 (Hartal)  (0) 2010.09.03
포커 패(Poker Hands)  (0) 2010.09.01
호주식 투표법(Australian Voting)  (0) 2010.08.27