Juwan Park :: 직각삼각형 배열 값 채우기 예제

직각삼각형 배열 값 채우기 예제

★프로그래밍/Ruby :: 2016.08.28 23:03

루비로 2차원 배열에 직각삼각형으로 값을 채우는 예제입니다.

정보처리기능사 실기 알고리즘 문제에 비슷한 문제가 있었는데요.
이 예제에서의 규칙은 다음과 같이 설정했습니다.

  1. 시작 값은 1입니다.
  2. 첫 행은 맨 마지막 열만 채웁니다.
  3. 두 번째 행은 맨 마지막의 두 열만 채우되, 맨 마지막 두 번째는 5, 맨 마지막은 9입니다.
  4. 세 번째 행은 맨 마지막의 세 열만 채우되, 맨 마지막 세 번째부터 13, 17, 21 순입니다.
  5. 이런 식으로 4씩 커지면서 직각삼각형으로 채워집니다.

이 규칙에 따른 코딩입니다.

arr_size = 8    # 배열 크기 설정

# 배열과 채울 숫자를 미리 선언해 둡니다.
arr = Array.new(arr_size) { Array.new(arr_size, 0) }
fillnum = 1

0.upto(arr_size-1) do |y|
  (arr_size-1-y).upto(arr_size-1) do |x|
    arr[y][x] = fillnum
    fillnum += 4
  end
end

0.upto(arr_size-1) do |y|
  0.upto(arr_size-1) do |x|
    if arr[y][x] > 0
      print sprintf(" %3d ", arr[y][x])
    else
      print "     "
    end
  end
  puts
end

이 코드를 실행해 보면 다음과 같습니다.

                                      1 
                                 5    9 
                           13   17   21 
                      25   29   33   37 
                 41   45   49   53   57 
            61   65   69   73   77   81 
       85   89   93   97  101  105  109 
 113  117  121  125  129  133  137  141 

유용하게 활용하시기 바랍니다.

Today 6    Yday 37    Tot 64,060
Juwan Park
Juwan Park's blog is powered by Daum and TISTORY.
Contemporary Blue for TISTORY.
Designed by Juwan Park. Creative Commons License
▲ TOP