어떤순열 정보
어떤순열
본문
아래의 문제의 답을 도출하는 과정을 프로그래밍 언어로 구현하시오.(php, javascript... 뭐든 좋습니다)
안녕하세요~
오늘도 문제 나갑니다. 많은 분들 참여 부탁드립니다^^
헤밍순열이라는 것이 있습니다.
세개의 소수를 주어줄 때 그 세 소수의 배수들로만 이루어진 순열을 헤밍순열이라고 합니다.
즉 예를 들면,
2,3,5 라는 세 소수가 주어지면, 2, 3, 5의 배수들로만 이루어진 순열
그 결과는
2, 3, 4, 5, 6, 8, 9, 10, 12, 14, 15, ...... 이렇게 되겠지요.
이 순열의 10번째 수는 14 가 됩니다.
문제) 3, 7, 11 로 헤밍순열을 만들 때 1000 번째 오는 수는 얼마일까요?
댓글 2개

안녕하세요. 퀴즈가 생각보다 인기가 별로 없네요;;
코딩 관련 퀴즈는 이 문제를 마지막으로 접고,,,, 다음번에 다른 종류의 퀴즈로 다시 찾아오도록 하겠습니다.
그동안 적극적으로 풀어주신 유창화님을 비롯한 다른 모든 분께도 감사드립니당.
꾸벅 (____ ,. ____)
---------------------------------------
이번 문제를 푸는 방법도 여러가지가 있지만 가장 쉬운 방법 하나를 소개하고 마칠까 합니다.
<?php
$i = 1;
$order = 0;
echo "3,7,11 로 헤밍순열을 만들 때<br>";
while(1){
if($i % 3 == 0 || $i % 7 == 0 || $i % 11==0) {
$order++;
echo $order . " 번째 수는 " . $i . " 입니다<br>";
}
$i++;
if($order>=1000) break;
}
?>
이렇게 하면 쉽게 1000번째 수를 찾을 수 있습니다. 그런데 이 방법의 문제점은 1부터 모든 자연수를 하나하나 비교해가면서 true, false 를 판단한다는 것입니다.
실제 모든 수를 비교해가지 않고, 3의 배수, 7의 배수, 11의 배수만 찾아 그것을 배열로 만든 후에 merge 하는 방법이 더 좋을 것이라 생각합니다.. 그 방법으로는 직접해보시길 권장드리며...
감사합니다.
코딩 관련 퀴즈는 이 문제를 마지막으로 접고,,,, 다음번에 다른 종류의 퀴즈로 다시 찾아오도록 하겠습니다.
그동안 적극적으로 풀어주신 유창화님을 비롯한 다른 모든 분께도 감사드립니당.
꾸벅 (____ ,. ____)
---------------------------------------
이번 문제를 푸는 방법도 여러가지가 있지만 가장 쉬운 방법 하나를 소개하고 마칠까 합니다.
<?php
$i = 1;
$order = 0;
echo "3,7,11 로 헤밍순열을 만들 때<br>";
while(1){
if($i % 3 == 0 || $i % 7 == 0 || $i % 11==0) {
$order++;
echo $order . " 번째 수는 " . $i . " 입니다<br>";
}
$i++;
if($order>=1000) break;
}
?>
이렇게 하면 쉽게 1000번째 수를 찾을 수 있습니다. 그런데 이 방법의 문제점은 1부터 모든 자연수를 하나하나 비교해가면서 true, false 를 판단한다는 것입니다.
실제 모든 수를 비교해가지 않고, 3의 배수, 7의 배수, 11의 배수만 찾아 그것을 배열로 만든 후에 merge 하는 방법이 더 좋을 것이라 생각합니다.. 그 방법으로는 직접해보시길 권장드리며...
감사합니다.
-
채택 0

그동안 수고하셧습니다.
저도 재미있었습니다.
요번에는 제가 시간이 없어서 풀어보지 못했습니다.
사실 제가 문제 하나 푸는데도 시간이 많이 걸리거든요.
보통 보면 시간이 지날수록 프로그램 짜는 형태나
문제에 접근 하는 방식이 자꾸 바뀌게 되는데
저같은 경우는 이랫던거 같습니다.
처음에는 문제 해결에 급급
그다음에는 짧게 짜는게 최곤줄 알고 짧게 짜는데 열중
그다음에는 같은 결과물에 대해서 성능을 비교하며 연구
그다음에는 남이 보기 좋은 코드가 좋은 코드다. 라고 생각하며 줄정리에 신경
현재는 이것저것 여러가지 생각하다 보니
한줄짜리도 백줄짜리가 되버리네요.
예전에는 십분이면 끝날 일을
요즘에는 며칠씩 하는데.
이유는 이런 저런 경험을 하다 보니 너무 많은 경우의 수를 따지다가 보니 그렇게 되는것 같습니다.
아무튼,
요새 머리 아픈 일이 많았는데
팔팔이님 덕분에 머리도 풀리도 기분전환도 되어서 좋았습니다.
고생하셨습니다.
저도 재미있었습니다.
요번에는 제가 시간이 없어서 풀어보지 못했습니다.
사실 제가 문제 하나 푸는데도 시간이 많이 걸리거든요.
보통 보면 시간이 지날수록 프로그램 짜는 형태나
문제에 접근 하는 방식이 자꾸 바뀌게 되는데
저같은 경우는 이랫던거 같습니다.
처음에는 문제 해결에 급급
그다음에는 짧게 짜는게 최곤줄 알고 짧게 짜는데 열중
그다음에는 같은 결과물에 대해서 성능을 비교하며 연구
그다음에는 남이 보기 좋은 코드가 좋은 코드다. 라고 생각하며 줄정리에 신경
현재는 이것저것 여러가지 생각하다 보니
한줄짜리도 백줄짜리가 되버리네요.
예전에는 십분이면 끝날 일을
요즘에는 며칠씩 하는데.
이유는 이런 저런 경험을 하다 보니 너무 많은 경우의 수를 따지다가 보니 그렇게 되는것 같습니다.
아무튼,
요새 머리 아픈 일이 많았는데
팔팔이님 덕분에 머리도 풀리도 기분전환도 되어서 좋았습니다.
고생하셨습니다.
-
채택 0