지그재그 알고리즘

momomoki·2023년 10월 29일
0
public class Test2 {
	public static void main(String[] args) {
		int line = 4;
		int num = 0;
		int arrNum[][] = new int[line][line];
		for(int i = 1; i <= line; i++) {
			for(int j = 0; j < line; j++) {
				if(i % 2 == 0) {
					num++;
					System.out.print(num + line - 1 -(2*j));
					arrNum[i -1][j] = num + line - 1 - (2*j);
				}else {
					num++;
					System.out.print(num);
					arrNum[i - 1][j] = num;
				}
			
			}
			System.out.println();
		}
		int lastNum = arrNum[line-1][line-1];
		System.out.println(lastNum);
	} 
}

지그재그 알고리즘을 풀어 봤습니다.
출력 예시
한라인에 출력할 숫자갯수: 5
최종 숫자: 25

1 2 3 4 5
10 9 8 7 6
11 12 13 14 15
20 19 18 17 16
21 22 23 24 25
line에는 출력할 숫자의 갯수를 뜻하고 num은 그 안에 들어갈 숫자를 표현한것입니다. 그리고 출력예시를 보면 짝수자리에서 숫자의 순서가 뒤집힌다. 이것을 확인하고 들어갔습니다. 그래서 이중for문을 사용했는데 그다음 조건에서 i % 2 == 0이라는 조건을 줘서 짝수에서는 숫자를 뒤집을꺼다를 보여줄겁니다. 그래서 고민을 하다가 찾은 조건이 num + line - 1 -(2*j)로 이식을 사용하면 숫자를 뒤집어서 출력이 가능해집니다. 이거 찾는라 좀 많이 고민했습니다... 그리고 마지막번호를 출력하기위해 arrNum[][]이라는 배열을 선언하여 line,line의 크기 만큼의 배열을 만들어준 다음 그에 맞는 인덱스에 숫자를 넣어주는것인데 제가 i값을 0부터가 아닌 1부터 시작하여 인덱스의 번호에서는 맞지 않아 for문의 i를 0부터 시작하게하면 홀수시작이 아닌 짝수 시작으로 1로했고 그래서 arrNum에 들어가는 i값을 -1을해서 인덱스가 맞게 들어갔습니다. 그럼 결과를 보겠습니다.이라는 결과값을 얻는데 성공했습니다.!!!!

profile
얍얍엽엽욥욥

0개의 댓글