[알고리즘] 직각삼각형 만들기

2021. 9. 27. 17:29알고리즘/문제 풀이

728x90


직각삼각형이란 데이터의 위치가 직각 삼각형 모양을 띄고 있는 형태를 말하는데요.

 

형태는 아래와 같은 형태를 띌 수도 있고 반대의 형태도 있고 그밖에도 여러 형태를 띌 수 있겠죠.

 

아래의 형태를 예시로 들어 알고리즘 풀이를 해보겠습니다.

 

 

데이터가 들어가는 순서를 보면 행은 고정된 상태에서

 

열에 따라 오른쪽으로 데이터가 들어가는 걸 볼 수 있습니다.

 

행고정 열변화 형태인데요.

 

행고정 열변화에 대해서는 포스팅을 참고해주세요!

https://ho-ding.tistory.com/52

 

행을 i, 열을 j로 선언한다면

 

행 i 변수의 반복할 규칙은 i = 1, 5, 1 (시작값, 끝값, 증가값)으로 단순하나

 

열 j 변수의 규칙은 끝값을 상수로 처리하기가 어렵습니다.

 

 

위와 같이 변수 j 는 1행에서는 1열, 2행에서는 2열...

 

이렇게 종료되는 값이 변하기 때문에 반복할 규칙을 상수 처리를 할 수 없는데요.

 

이때 종료되는 값을 보면 행의 값에 따라 열도 종료되는 걸 알 수 있습니다.

 

그래서 반복할 규칙 중 끝값을 i 로 변수 처리를 하면 됩니다.

 

따라서 j = 1, i, 1 이 되는 겁니다.

 

다음과 같이 순서로 데이터가 들어가는 직각삼각형 모양을 띈다면 규칙은 어떻게 될까요?

 

 

 

 

이번에는 변수 j 가 1행에서는 5열, 2행에서는 4열 순으로 데이터가 들어가는 형태입니다.

 

전에는 행과 반복이 종료되는 값이 같아 반복할 규칙 중 끝값으로 변수 i 를 넣어서 처리했지만

 

이번에는 전과 같이 처리할 수 없는 형태인데요.

 

위의 표를 잘 보면 열과 종료되는 값을 더하면 6이 나오는 걸 알 수 있습니다.

 

더한 값 6에서 - i 를 하면 반복이 종료되는 값이 나오게 되죠. 

 

따라서 j = 1, 6-i, 1 이 됩니다.