메뉴 건너뛰기

app

[풀이] 머리가 굳었을 때 풀어보는 문제

suritam92012.11.19 05:22조회 수 2927댓글 0

  • 1
    • 글자 크기

요즘 수학이던 과학이던 생각하는 걸 너무 귀찮게 생각하고 있어, 생각하는 연습을 하기 위해 문제를 풀었다.


그나마 능숙한(?) PHP로 했는데, " java, c++, scalar, js, rb. haskell 만 지원"  한다.


걍. 버림. 뭐,,. 어차피 허접한 코드니... php가 설치된 서버 terminal 에서


$ php [파일명]

으로 실행시킨다.


fest.jpg


<?php

function read() {

    $fp=fopen("/dev/stdin", "r");

    $input=fgets($fp, 255);

    fclose($fp);

  return str_replace("n", "", $input);   // 개행 처리

            //return $input;

}

function fest($arr, $l, $s){

//$s 시작 포인트

//$l 연속된 위치까지

$arr_sz=count($arr);

$sum=0;

for($i=$s;$i<$l+$s;$i++){

$sum=$arr[$i]+$sum;

}

return $sum;

}

   print("input C ? ");

   $c_val = read();

if(is_int(intval($c_val)) && $c_val>0){

$c_val_int=1;

$c_val_num=intval($c_val);

}else{

$c_val_int=0;

}

if($c_val_int){

while($c_val_num--){

  print("input N L ? ");

  $n_l_val = read();

  $n_l_val_list=explode(" ",$n_l_val);

  if(count($n_l_val_list)==2){

  $n_val=intval($n_l_val_list[0]);

  $l_val=intval($n_l_val_list[1]);

  if($n_val>=$l_val)

  $n_l_val_clear=1;

  }else{

  $n_l_val_clear=0;

  }

if($n_l_val_clear){

  print("input cost ? ");

  $cost_val = read();

  $cost_val_list=explode(" ",$cost_val);

$s_limit=$n_val-$l_val+1;

$s_val=0;

$sum_str="";

$sum_list=array();

if(count($cost_val_list)==$n_val){

while($s_limit--){

$sum_list[]=fest($cost_val_list, $l_val, $s_val++);

}

$sol_list[]=round(min($sum_list)/$l_val,10);

}else{

print("n ------------you should input count(cost)==N-------------- n");

$c_val_num++;

}

}else{

print("n ------------you should input N>=L and two args-------------- n");

$c_val_num++;

}

}

$c_s_l=count($sol_list);

$j=0;

while($c_s_l--){

echo $sol_list[$j++]."n";

}

print("end processn");

}

?>


아래 경로에 있는 문제를 풀어보았다.


http://prague.algospot.com/judge/problem/read/FESTIVAL


록 페스티벌

문제 정보

문제

커다란 공연장을 빌려서 록 페스티벌을 개최하려고 합니다. 이 페스티벌은 여러 날 동안 진행되며, 하루에 한 팀의 밴드가 공연장에서 콘서트를 하게 됩니다. 전체 밴드를 몇 팀 섭외할 지는 아직 결정하지 않았지만, 페스티벌의 간판 스타인 L개의 팀은 이미 섭외가 끝난 상태입니다. 따라서 페스티벌은 최소 L일 이상 진행하게 됩니다.

이번에 사용할 공연장은 하루 빌리는 데 드는 비용이 매일 매일 다릅니다. 때문에 공연 일정을 잘 정해서 공연장 대여 비용을 줄이려고 합니다. 앞으로 N일간의 공연장 대여 비용을 알고 있다고 합시다. 이 중 L일 이상을 연속해서 대여하되, 공연장을 하루 빌리는 데 드는 평균 비용을 최소화하려면 어떻게 공연장을 빌려야 할까요?

예를 들어 앞으로 6일간 공연장을 빌리는 데 드는 비용이 각 {3, 1, 2, 3, 1, 2}라고 합시다. 이미 세 팀을 섭외했다고 하면, 3일 대신 4일 동안 공연을 진행해서 평균 비용을 더 저렴하게 할 수 있습니다. 3일 동안의 평균 대여 비용을 최소화하는 방법은 2일째부터 4일째까지 공연장을 대여하는 것인데, 이 때 하루 평균 (1+2+3)/3 = 2의 비용이 듭니다. 반면 2일째부터 5일째까지 공연장을 대여하면 평균 비용이 (1+2+3+1)/4 = 7/4밖에 되지 않습니다.

입력

입력의 첫 줄에는 테스트 케이스의 수 C (C ≤ 100)가 주어집니다. 각 테스트 케이스의 첫 줄에는 공연장을 대여할 수 있는 날들의 수 N (1 ≤ N ≤ 1000)과 이미 섭외한 공연 팀의 수 L (1 ≤ L ≤ 1000, L ≤ N)이 주어집니다. 그 다음 줄에는 N개의 숫자로 공연장 대여 비용이 날짜별로 주어집니다. 모든 비용은 100 이하의 자연수입니다.

출력

입력에 주어지는 각 테스트 케이스마다 한 줄에 최소의 평균 대여 비용을 출력합니다. 10-7 이하의 절대/상대 오차가 있는 답은 정답 처리됩니다.

예제 입력

2
6 3
1 2 3 1 2 3 
6 2 
1 2 3 1 2 3

예제 출력

1.75000000000
1.50000000000

suritam9 (비회원)
  • 1
    • 글자 크기
[WP7] Visual Studio 2010 설치 후, SDK 설치 (by suritam9) [WP7] 전역변수의 array(dicionary)와 map의 pushpin 제어하기 (by suritam9)

댓글 달기

suritam9
2012.06.22 조회 2448
suritam9
2012.06.24 조회 2403
suritam9
2012.06.24 조회 2580
suritam9
2012.06.24 조회 2235
suritam9
2012.09.14 조회 2387
suritam9
2013.04.04 조회 2018
suritam9
2013.04.25 조회 5867
이전 1 ... 4 5 6 7 8 9 10 11 12 13 14다음
첨부 (1)
fest.jpg
10.6KB / Download 32
위로