2021. 10. 6. 22:31ㆍ알고리즘/문제 풀이
ㄹ자 채우기
2차원 배열에 ㄹ자 방향으로 데이터가 들어가는 방식입니다.
행이 고정된 상태에서 열이 변화하면서 데이터가 들어간 형태로 방향은 아래와 같습니다.
첫 행은 1열부터 5열까지 1씩 증가하는 형태,
다음 행은 5열 부터 1열까지 1씩 감소하는 형태가 반복됩니다.
이 때 열의 시작값, 끝값, 증가값이 바뀌기 때문에 상수 처리를 할 수 없어
변수로 처리를 해야 합니다.
변화하는 값을 확인해보니 일정한 패턴이 보이는데요.
첫 행의 시작값은 다음 행의 끝값으로,
첫 행의 끝값은 다음 행의 시작값으로,
첫 행의 증가값에서 -1을 곱한 값이
다음 행의 증가값으로 반복되는 걸 알 수 있습니다.
교환로직
일반적으로 A, B라는 두 저장공간이 있을 때
A값과 B값을 서로 바꿀 때
A값을 B값으로 옮기면 기존의 B값은 지워지고 A값이 덮어씌워지게 됩니다.
교환로직은 이 때 임의의 변수(주로 Temp로 명명)를 만들어
임시로 데이터를 놔둘 공간을 마련합니다.
옮길 A값을 Temp로 옮겨 두고
B값을 A로 옮긴 뒤
Temp에 있던 값을 B로 옮깁니다.
순서를 식으로 표현하면
Temp = A
A = B
B = Temp
가 됩니다.
이를 응용한 문제의 순서도를 살펴보겠습니다.
5행 5열의 2차원 배열에 다음과 같은 값을 저장할 때의 순서도입니다.
위에서 살펴봤던 교환로직인
Temp = A
A = B
B = Temp
가 예시에서는
TEMP = BEGIN
BEGIN = END
END = TEMP
이 부분이 되겠죠.
증가값에 -1씩 곱해야 할 부분은
SW = SW * (-1)
로 처리되었습니다.
'알고리즘 > 문제 풀이' 카테고리의 다른 글
[알고리즘] 90도 회전 (0) | 2021.10.08 |
---|---|
[알고리즘] 다이아몬드 만들기 (0) | 2021.10.07 |
[알고리즘] 직각삼각형 만들기 (0) | 2021.09.27 |
[알고리즘] 에라토스테네스의 체를 이용해 소수 구하기(JAVA) (0) | 2021.09.24 |
[알고리즘] 분수 수열 덧셈 (0) | 2021.09.23 |