[편집자주]
본 기사는
"뇌를 자극하는 C 프로그래밍"의
독자 서비스 사이트 퀴즈 이벤트 게시판에 게재된 퀴즈와 독자분들의 답글을 모은 것입니다.
[퀴즈]
혹시 방울꽃과 달팽이의 애절한 사랑 이야기를 들어보셨습니까?
방울꽃이 사랑하는 나비는 방울꽃의 달콤한 향기만을 좇아 날아들었고 방울꽃의
꽃잎이 지자 금방 날아가 버렸지요. 하지만 달팽이는 자신의 등껍질이 햇빛에
마르도록 방울꽃의 곁을 지켰다는 사랑 이야기입니다.
이 달팽이가 이번에는 3m 깊이의 우물에 빠지게 되었습니다.
하루 이틀 꽃잎이 지는 방울꽃은 일주일이면 꽃잎이 모두 떨어져 시들어버리게 됩니다.
달팽이가 낮 동안에 열심히 우물을 기어 올라가면 55cm를 올라가고
쉬는 밤중에는 13cm를 미끄러지게 됩니다.
과연 이 달팽이는 방울꽃이 시들기 전에 그 곁을 지킬 수 있을까요?
*** 답과 함께 이유를 적어 봅시다 ***
----------------------------------------------------------------------------------------
허접하지만.. 7일동안이구요... 3미터라면 7일전에 3미터를 올라오면 되는군요.
55cm-13cm 이라는게 하루 동안에 올라갈 수 있는 최대높이군요. ^^
하루에 42cm를 올라간다면 7일동안은 294cm를 올라갑니다. 하지만 ^^
7일 동안에서 점심에 이미 3미터를 넘어버리죠 ^^ 그렇기 때문에 미끄러질 일이 없습니다. ^^
그래서 달팽이는 방울꽃이 시들기 전에 곁을 지키며 임종을 지켜봤다는...
----------------------------------------------------------------------------------------
위의 분 말씀이 맞는 듯 한데요. 그래서 좀 특이하게 답을 달아 봅니다.
첫째, 달팽이는 쉬지 않는다.
낮 동안에 55cm씩 올라갑니다. 그러나 달팽이는 부지런해요.ㅋ 쉬지 않아요 . 밤에도.
그래서 55cm씩 5일 이후 6일에는 방울꽃을 볼 수 있겠죠.ㅋㅋㅋ
둘째, 7일 낮.(55-13) * 6일 = 252cm 올라가죠. 7일 낮에 다시 55cm 올라가면
307cm 즉 3 미터가 넘어요. 방울 꽃을 만나게 되었죠..........그런데..우물입구와 방울꽃 까지의 거리가 좀 멀었다는 슬픈 이야기가...
----------------------------------------------------------------------------------------
다들 맞는 말씀인 것 같네요.
낮에 55cm를 올라가고 밤에 다시 13cm 떨어지니까 하루에 42cm를 올라가게 됩니다. 그렇게 해서 6일이 지나면 252cm를 올라가게 되고 마지막 7일째 낮에는 55cm를 올라가서 307cm를 오르게 됩니다. 그래서 3m를 넘기게 되죠.
그런데 가슴 아픈 이야기지만 여기서 꼭 달팽이가 방울꽃의 임종을 지켜봤다고는 할 수 없을것 같습니다.
왜냐하면 낮동안 열심히 올라간 달팽이는 3m가 넘어 우물을 나왔지만 방울꽃은 아침에 꽃잎이 모두 떨어져 시들어 버렸을 수도 있으니까요...
일주일이라고 하지만 꼭 그날 밤까지 시들지 않고 있는 건 아닐테니까요...
하지만 저의 바램은 달팽이가 방울꽃의 임종을 지켜봤으면 하네요...^^
그냥 윗분들과 다르게도 생각해 보았습니다.
----------------------------------------------------------------------------------------
방울꽃이 지는 모습을 마지막날 지켜보는 것이 가능합니다.
이유는 다음과 같습니다.
하루 55cm - 13cm 즉 42cm를 올라가게 됩니다.
6일간 올라가는 높이는 42cm * 6일 = 252cm 가되며 7일째 되는 날 낮에 48cm 를 올라간 시점에 우물을 탈출하게 되므로 가능합니다.
방울꽃은 다년생이니 다음해 다시 꽃이 피겠지만, 달팽이는 1년 넘어 못 사는 걸로 압니다. 내년의 해후는 힘들겠군요. 짧다면 짧은 만남의 시간이지만, 소중한 이별이 기다리고 있다면 도전해 볼 가치가 있지 않을까요.
----------------------------------------------------------------------------------------
이미 앞에 분들께서 다 답을 언급하셔서 여기에서 같은 답을 언급하기 민망하네요....--;; 낮동안 55cm 올라가고 밤사이 13cm 내려온다면 하루동안 42cm 올라가는 셈입니다. 그렇게 6일 낮과 밤이 지나면 252cm 올라갈 것이고 마지막 7일째 48cm 올라가면 방울꽃의 마지막 꽃잎을 볼 수 있겠네요
----------------------------------------------------------------------------------------
처음 들어보는 이야기라 인터넷을 찾아 읽어봤는데, 잎이 다 떨어지더라도 씨를 흙으로 덮어주는 사랑 이야기네요.
하지만 문제에서의 달팽이는 방울꽃의 마지막 잎 하나는 지키겠군요. 55cm씩 7일이면 3m 85cm, 마지막 날의 밤 시간을 제외한 13cm씩 6일은 78cm. 일주일째에 우물 밖으로 나올 수 있겠네요.
----------------------------------------------------------------------------------------
만약 정말 달팽이가 해가 떠있는 동안엔 55cm를 올라가고 달이 떠있는 동안은 13cm 미끌어진다면.. 하루에 42cm를 오르게 됩니다.
그럼 마지막 7일이 시작되기 전까지는 252cm 올라와 있을 것이고..
낮에 또 열심히 48cm를 올라오게 되니까 딱 일주일만에 우물밖으로 나오겠지만
방울꽃의 임종(?)을 지켜볼수 있을지는 의문이네요.
그 방울꽃이 저녁에 진다면 볼수 있겠지만, 아침에 져버렸다면?
하지만 이 세상엔 기적과 노력이란 게 있죠.
달팽이가 방울꽃의 모습을 보고자 쉬는 시간을 조금씩 줄여서 올라오고 있었다면?
또한 방울꽃 역시 달팽이에게 자신의 마지막 모습을 보여주고자 마지막까지
안간힘을 써서 피어있었다면 그 둘은 달팽이가 힘을내서 올라와 방울꽃을 봤을때 그런 달팽이를 보며 미소를 지어주다가 꽃잎이 떨어지고 시들어갈 때 달팽이는 그 옆에서 편하게 쉴 수도 있지 않을까요?
----------------------------------------------------------------------------------------
달팽이가 낮에 55cm ,저녁에 13cm 내려가니
하루에 42cm 미터씩
표로 그려 보면 (설명을 잘 못하다 보니)
낮 저녁 최종위치
1일 (0~55) (55-13) 42cm
2일 (42~97) (97-13) 84cm
3일 (84~139) (139-13) 126cm
4일 (126~181) (181-13) 168cm
5일 (168~223) (223-13) 210cm
6일 (210~265) (265-13) 252cm
7일 (252~307) 307cm
7일째는 낮에 300cm를 넘으니 저녁에 우물에
13cm 내려갈 이유가 없기 때문에 7일째 우물을
탈출 하게 됩니다.
<일몰,일출 참고>
http://w365.com/korea/kor/sunm/sun_monn.php
제주도라고 가정하고 날짜는 2005년 9월 1일~7일 이라고 한다면
7일 일출 시간과 일몰시간은 각각 06시 11분(am) , 06시 51분(pm)
7일날 시간적 여유는 12시간 40분
시간당 55/12 = 4.583 cm
40분에 3.05532 cm 이동
7일날 이동 거리를 표로 만들어 보면
달팽이 힘내라!
시간 이동거리
6시11분 252
7시 11분, 256.583000
8시 11분, 261.166008
9시 11분, 265.749016
10시 11분, 270.332024
11시 11분, 274.915031
12시 11분, 279.498039
13시 11분, 284.081047
14시 11분, 288.664055
15시 11분, 293.247063
16시 11분, 297.830070
17시 11분, 302.413078
18시 11분, 306.996086
18시 40분, 310.051394
17시 11분 쯤에 탈출 하게 되네요.
해가 질 때까지 1시간 29분 정도 시간이 남았으니
방울꽃이 시들기 전에 그 곁을 지킬 수 있을 거라 생각됩니다.
훌쩍 ㅠ.ㅠ
▒ 네이버 백과사전 인용 : 방울꽃(9월로 가정한 이유)과 낮(정확한 뜻을 몰라서 참조) ▒
방울꽃
낮은 지대의 습기가 있는 그늘에서 자란다. 높이 30∼60cm이다.
원줄기는 사각형이며 마디의 윗부분이 굵어지고 마디와 어린 잎에 긴 털이 난다.
잎은 마주나고 넓은 달걀 모양이며 길이 4∼10cm, 나비 3∼6cm이다.
양면에 털이 나고 끝이 뾰족하며 가장자리에 둔한 톱니가 있다.
잎자루는 길이 1∼5cm이다.
꽃은 9월에 연한 자줏빛으로 피는데,
아침에 피었다가 저녁에 지며,
윗부분의 잎겨드랑이에 달린다.
가축 사료로 쓴다. 한국(제주도)·일본 등지에 분포한다
낮 [daytime]
아침부터 저녁까지의 해가 떠 있는 동안을 말하며, 주간(晝間)이라고도 한다. 좁은 의미로는 아침·저녁에 대응하여 대낮, 즉 정오 전후의 시간을 가리키기도 한다. 지구의 자전축이 공전면에 대하여 직각이 아니고, 66° 33 " 정도 기울어 있기 때문에 낮의 길이는 위도와 계절에 따라서 다르다.
일반적으로 어떤 지역에서 낮의 길이를 t(시간), 위도를 φ, 태양의 적위(赤緯)를 δ라 하면, cos(15°×0.5t)=-tan φ·tan δ라는 관계식이 성립한다.
----------------------------------------------------------------------------------------
달팽이가 올라가는 거리는 낮에 올라가는 거리입니다.
그리고 밤에는 미끄러 집니다. 여기서 생각해보면 7일의 여유기간이 있습니다.
즉 최소 6번은 미끄러진다는 것입니다.
7번째 날에는 밤에 쉬지를 않을수 있으므로 6번만 미끄러진다고 하면 7일 밤이 되기 전에 달팽이는 방울꽃에 도착할수가 있을 것입니다.
----------------------------------------------------------------------------------------
뒷북일지 모르지만 뇌자씨에 그 정답이 나와 있네요. 우리는 너무나 귀찮은 것을
싫어합니다. 그래서 하루에 올라가는 길이를 42cm로 계산하는 오류가 있습니다.
그러나 그게 아니죠. 55cm 먼저 올라가고 난 후에야만이 13cm 미끄러지는 거죠.
6일째가지는 오히려 첫번째가 계산하기 쉽습니다. 하지만 마지막 날까지 계산하면
오류가 나죠. 7일째에 다 도착했는데 떨어질 이유가 없지 않겠습니까?
즉 42cm*6일=252cm이고 마지막 밤이 되기 전에 55cm 올라가서 307cm가 되어 만나을
때니까요. 낮밤을 각각12시간이라고 가정하면 약4.58cm/h가 되어서 약1시간30분정도 밖에 만나지는 못하지만 그래도 만나는 것은 맞으니까요.
----------------------------------------------------------------------------------------
몇가지 가정이 필요합니다.
꽃잎이 떨어지는 시기가 하루의 어느때이냐에 따라서..
제가 세운 가정은 밤이 시작되는 시점으로 보고싶네요^^
추가적으로 꽃잎이 7개라고 가정하고 하루에 하나씩 떨어지는걸로...
day 1.
남은 거리 300-55=245
남은 꽃잎 7-1=6
남은 거리 245+13=258
day 2.
남은 거리 258-55=203
남은 꽃잎 6-1=5
남은 거리 203+13=216
day 3.
남은 거리 216-55=161
남은 꽃잎 5-1=4
남은 거리 161+13=174
day 4.
남은 거리 174-55=119
남은 꽃잎 4-1=3
남은 거리 119+13=132
day 5.
남은 거리 132-55=77
남은 꽃잎 3-1=2
남은 거리 77+13=90
day 6.
남은 거리 90-55=35
남은 꽃잎 2-1=1
남은 거리 35+13=48
day 7.
남은 거리 48-55=-7 (만났다!!!)
남은 꽃잎 1-1=0 (마지막 꽃잎 떨어짐)
남은 거리 다 올라왔으니 안미끄러짐..^^
결국 마지막 꽃잎이 떨어지기 직전에 달팽이가 도착하게 됩니다.
----------------------------------------------------------------------------------------
예제가 참 좋다는 생각이 들었어요.
그런데 조금 의아한 생각이 들어 글을 올려봅니다.
며칠이 걸리는지 days 변수를 증가시키고 있는데 초기값은 0으로 되어있습니다.
만약 while()의 조건문을 한번도 만족시키지 못할 경우 days값은 0이 되는데,
그건 0 - 55 올라가는건 : 반나절 0일
0 - > 55(낮) -> 97(다음날 낮) : 하루 반 (2일)
0 -> 55(낮) -> 97(다음날 낮) -> 139(다다음날 낮) : 이틀 반(3일)
이런식으로 맞아 떨어지는건지요?
그렇지 않고 days값을 1로 초기화 한다면 출력문의 결과값은 단순히 하루단위로
계산되어 while()문의 조건문을 한번도 만족시키지 못해도 1일이 출력될테고,
두경우 모두 출력은 days를 0으로 초기화 했을때의 결과값에 1을 더해준다면
(6일 반 => 7일로 생각한다면)같아지는데....
책의 출력문엔 6으로 되어있네요 .... 꼬박 6일이 걸리고 7일째 우물을 벗어난다
라고 설명되어있긴한데...
뭐 별 대수롭지도 않은 문제이지만 저한텐 헷갈려서요...
또, 뇌자님이 이 싸이트를 꼼꼼히 챙기시고
책내용에도 여러모로 세심한 주의를 기울이신게 느껴져서 혹시나 도움이 될까
수고하십시요... 그럼..
----------------------------------------------------------------------------------------
일단 달팽이 우물탈출 프로그램의 촛점은 책에도 언급했듯이
일의 순서가 결과에 영향을 미치므로 합리적인 순서를 정해야 한다는 것입니다.
그 내용은 이해하셨으리라 믿고요.. 문제 자체에 대해서 잠깐 생각해 보면
약간 뇌를 자극하는 면이 없지 않지요...
만약 문제가 달팽이가 우물을 탈출하는데 몇 일이 걸릴까요? 라고 한다면
논란의 여지가 있을 수 있습니다. 만 6일이 걸리고 7일째 올라갔다면
만 7일은 걸리지 않았지만 6일은 넘었으므로 통념상 7일이라고 할 수도 있을
것입니다. 그래서 방울꽃을 등장시켰고요 방울꽃이 시들기 전에 올라가야 하므로
만 7일이 걸리지 않느냐를 판단하도록 문제를 만든 것입니다.
프로그램 역시 달팽이가 우물을 탈출하느냐를 판단할 수 있도록 작성하면 됩니다.
즉, days의 값을 0으로 초기화하면 출력된 결과가 최소한 몇 일 이상은
걸린다는 결과를 출력하는 것이고, 1로 초기화 하면 몇 일 이내에 탈출하느냐의
결과가 될 것입니다. 두 가지 모두 프로그래밍이 가능할 것입니다.
따라서 days의 값을 얼마로 초기화 하느냐가 중요한 것이 아니고
초기화 값에 따른 결과가 어떤 의미를 갖느냐를 아는 것이 중요합니다.
그것을 판단하는 것은 프로그램을 작성하는 사람의 몫일 것입니다.
서현우