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

직접 개발한 프로그램 - JNU EYE

Developed Program/IPhone 2010. 9. 2. 23:26
The Iphone Application JNUEYE is used in Univ's campus,korea.
Because of our mistake, the program is saying that "this program's language is English"  in Itunes.
But it ISN'T TRUE, Actually ONLY USED IN KOREAN'S UNIVERSITY, and DOESN'T USE ENGLISH.
of course you can download and Install, even if It doesn't work propery.
I'm very sorry for this problem. if you have any question, plz let me know..




JNU EYE를 아는 사람이 있을까 ?
전남대 학생이라도 아마 대부분 모를거라고 생각한다..(ㅠ_ㅠ)

연구실 동료들과 처음 만든 아이폰용 앱(application)이었는데,
프로그램을 올릴때 애플 사이트를 이용해 본적이 없어..(라고 쓰고 영어에 약해서라고 읽는다) 실수로 ..
language가 English로 설정되어 버렸다 ;;

몇일전에 히트수를 봤더니 70명정도 였는데, 아마 대부분 외국인이 AR(Augumented Reality - 증강현실) 이라는 사실에 신기해 다운받아보지 않았을까 생각한다 . -ㅅ-

어쨌든 이렇게 망하긴했지만 개인적으로 많은걸 배웠고, 아이폰용 프로그램을 처음 만들었다는 걸 기념하기 위해, 그리고 혹시나 JNU EYE가 어떤 프로그램인지 검색해보셨을지도 모르는 외국인유저를 위해 포스팅하기로 결정했다.

KT 호남 무선마케팅에서 전남대 학생을 대상으로 어플 개발대회를 개최했었는데,
그 2위 수상작이다
   
 

2위라서 별로 스포트라이트도 받지못하고.. 뭐 그랬다 ㅋ
아무튼.. 이 프로그램은 AR을 이용하는 대부분의 프로그램이 그렇듯 오브제 프로그램이다.

오브제 프로그램이라하면..  TV CF를 생각해보면 간단하다. 요즘 스마트폰의 CF라하면, 대부분 광고하고 있는 프로그램이다.
예를들어 무슨 모델인진 기억안나는데, 공항에서 카메라가 열린상태에서 대화를 하던 CF, 애쉬튼 커처의 선글라스를 찾는 CF에서 로드뷰와 같이 실제 카메라 영상위에 길이 그려진 장면등의 프로그램. 그 프로그램과 같은 류이다 .

사실 정통 증강현실이라하면 영상처리를 해서 ~ 이 마커에서는 이 이미지를~ 요 마커에서는 저 이미지를~ 뿌리고 해야겠지만.
어쨌든 오브제 프로그램은 저런식이다.

 처음 켜면, 카메라가 열리고, GPS를 이용해서 현재 위치를 파악하고, Compass를 이용해서 현재 보고 있는 방향을 알아내어 적절한 수식으로 우리대학..(이미 다 들통난 학력.. ㅡㅡ;;;)의 주변 시설로의 길을 안내하는 프로그램이다.

카메라위에 이미지를 올리는 AR부분은 사실 IPhone SDK 에서 좋은 기능을 제공해서 어렵지 않게 만들수 있었다.

<<  처음 실행시키고 기본 뷰 >>



<< 카테고리 검색>>


복사실, 자판기, 카페, ATM(은행), 상징물, 정류장등을 찾을수 있도록 카테고리별 검색기능도 있었다.

<< 탐색 >>

물론 특정 건물 명칭으로 검색하는 기능도 있었다. 현재 보고있는 곳에서 왼쪽에 있으면 왼쪽에,
오른쪽에 있으면 오른쪽에 화살표가 생긴다.

뭐 전대 지리를 모르는 사람이라면 나름, 유용한 프로그램이라고 자신한다 ㅋ

IPhone 어플 JNU_Eye 다운받기, 상세보기

http://itunes.apple.com/kr/app/jnueye/id383583116?mt=8 

포커 패(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