Q&A

  • 5개 숫자 조합해서 100만들기
5개 숫자를 조합해서 100이라는 숫자를 만들려고 합니다..
예를들면

1 1 1 1 96
1 1 1 2 95
1 1 1 3 94
      :
      :
50 1 1 1 47
50 1 1 2 46
      :
      :
95 2 1 1 1
96 1 1 1 1

이런식입니다.
문제는 for문을 써서 위와같이 구현하려고 했더니..
Out of Memory가 나더군요.. 하기사 가지수가 무려 4800만개가 넘으니..

고수님들 무슨 방법이 없을까요?
1  COMMENTS
  • Profile
    윤창준 2002.03.19 21:15
    안녕하십니까?
    저두 초보입니다만 ^^
    숙제를 하시나 본데....
    이건 알고리즘에 문제입니다.
    어떻게 프로그램을 하셨는 지는 몰라도 OUT of Memory는 가지수 와는 문제가 다릅니다.
    메모리를 효율적으로 관리를 하지 못해서 그런것 같은데요.
    아래와 같이 1부터 100까지 이니깐 byte형으로 500개의 배열만으로도 해결이 가능 할것 같은데요.
    체크해줘야 하니깐 600개 정도면 하시구도 남을 것 같은데 이것도 무식한 방법으로 한 경우입니다. 저두 초보라....^^;
    for 문 만으로 해결하는 것은 아주 거시기 한 방법인것 같구요.
    중간에 if문으로 해결을 하셔야 합니다.

    올리신 예제를 보면
    다섯번째 숫자가 100일 경우 네번째 숫자와 합이 100 보다는 작아야됩니다.
    또한 세번째는 다섯번째와 네번째와 세번째의 합이 100보다 작아야 됩니다.
    네번째.. 다섯번째도 마찬가지 입니다.
    따라서  1부터 100까지 계속 루프문을 실행할 필요는 없겠죠.
    중간에  if 문으로 break명령이 있어겠죠.

    예를 만들어 드리면 좋게지만. 저두 지금 회사라... 눈치도 보이고..
    정신 건강상 한번 해보심도 좋을 것 같습니다.

    그럼 즐델 하시고 좋은 하루 되십시요..