난해한 문제.. ㅠㅠ 0 4 1,911

by 엄범정 [2007.12.24 12:34:51]


외딴섬에 쥐 2쌍(4마리)이 삽니다.

 

이 쥐들은 2살입니다.

 

쥐는 3살부터 매년 번식을 할 수 있습니다.

 

한쌍이 두쌍을 낳습니다.

 

쥐의 수명은 10년입니다.

 

100년이 지나면 총 몇마리의 쥐가 살게 될까요?

 

이문제를

 

DB에 최소한의 자원을 이용해서 올리려면 어떻게 해야할까? (Oracle)

by 현 [2007.12.24 00:00:00]
정말 난해하군요.
혹시 수학공식을 알려달란 질문인가요?

by 범정 [2007.12.24 00:00:00]
정답을 안다면 그걸 공식화 시키면 되는데...
머리에 쥐가 나겠더군요...
ㅠㅠ

by 구름 [2007.12.27 00:00:00]
이거...

create or replace procedure kill_mouse is
/****************************************************************
외딴섬에 쥐 2쌍(4마리)이 삽니다.
이 쥐들은 2살입니다.
쥐는 3살부터 매년 번식을 할 수 있습니다.
한쌍이 두쌍을 낳습니다.
쥐의 수명은 10년입니다.
100년이 지나면 총 몇마리의 쥐가 살게 될까요?
이문제를
DB에 최소한의 자원을 이용해서 올리려면 어떻게 해야할까?
****************************************************************/
cursor cur is
select lot_seq, age, flag from test_pro where flag = '1';

var_year number := '2007';
into_lot1 varchar2(2000);
into_lot2 varchar2(2000);
var_err_msg varchar2(2000);
--var_age number := 0;
var_chk_loop number := 0;
begin
select max(substr(lot_seq, 1, 4)) + 1 into var_year from test_pro;
for cur_c in cur loop

begin
if cur_c.age > 1 then

begin
select var_year ||
max(lpad(substr(lot_seq, 5, 20) + 1, 20, 0)),
var_year ||
max(lpad(substr(lot_seq, 5, 20) + 2, 20, 0))
into into_lot1, into_lot2
from test_pro
where substr(lot_seq, 1, 4) = var_year;
if into_lot1 = var_year then
into_lot1 := var_year || '00000000000000000001';
into_lot2 := var_year || '00000000000000000002';
end if;
exception
when others then
into_lot1 := var_year || '00000000000000000001';
into_lot2 := var_year || '00000000000000000002';
end;

insert into test_pro values (into_lot1, 1, '1');
insert into test_pro values (into_lot2, 1, '1');
--commit;
update test_pro
set age = age + 1
where lot_seq = cur_c.lot_seq;
--commit;
else
update test_pro
set age = age + 1
where lot_seq = cur_c.lot_seq;
--commit;
end if;

if cur_c.age = 10 then
update test_pro
set flag = '2'
where lot_seq = cur_c.lot_seq;
--commit;
end if;
exception
when others then
var_err_msg := sqlerrm;
dbms_output.put_line('Err - .?????' || var_err_msg);
end;
/*if var_chk_loop = 10 then
return;
dbms_output.put_line('10 ok!!!!');
end if;*/
end loop;
commit;

end kill_mouse;
컬럼 3개짜리 테이블 하나 맹글어서.

이프로시저를 100번 loop 돌리면되는데..

돌리면 다운될걸요...

이런건 왜 요청을 하는지..

by 구름 [2007.12.27 00:00:00]
대략
1,687,931,243,565,620,000,000,000,000,000
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입