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 48    Yday 46    Tot 56,858
Juwan Park
Juwan Park's blog is powered by Daum and TISTORY.
Contemporary Blue for TISTORY.
Designed by Juwan Park. Creative Commons License
▲ TOP