Q. 자바 초보 2차원배열 질문좀합니다

기본 아바타 김광호 2019. 01. 25. 조회수 321


3 1 5 2 4

5 0 0 0 0

4 0 0 0 0

1 0 0 0 0

2 0 0 0 0 이럴때 두번째행은 5 2 4 3 1

세번째행은 4 3 1 5 2

네번째행은 1 5 2 4 3

다섯번째행은 2 4 3 1 5

이런식으로 값을 첫번째행에서 당겨오고싶은데 어떻게 해야할까요?

공유하고 보상받기 ♥︎
댓글 0

1개의 답변이 있습니다.

질문자 & 큐레이터 채택
봉으니 답변자인증
시스템 2019. 01. 25 100%의 채택
public static void main(String[] args) {
		int[][] data = {
			{3,1,5,2,4},
			{5,0,0,0,0},
			{4,0,0,0,0},
			{1,0,0,0,0},
			{2,0,0,0,0}
		};

		System.out.println("=========");
		for(int i=0; i<data.length; i++) {
			for(int j=0; j<data[i].length; j++) {
				System.out.print(data[i][j]);
				if(data[i].length != j+1) System.out.print(",");
			}
			System.out.println("");
		}
		System.out.println("=========");

		for(int i=0; i<data.length; i++) {
			if(i > 0) {
				int[] target = data[0];
				int find = data[i][0];
				int loop = data[i].length;
				
				boolean pass = false;
				int k = 0;
				while(true) {
					if(target.length == k) {
						k = 0;
					}
					if(!pass && find == target[k]) {
						pass = true;
					}
					if(pass) {
						//System.out.println(target[k]);
						data[i][data[i].length-loop] = target[k];
						loop--;
					}
					k++;
					if(loop == 0) break;
				}
			}
		}

		System.out.println("=========");
		for(int i=0; i<data.length; i++) {
			for(int j=0; j<data[i].length; j++) {
				System.out.print(data[i][j]);
				if(data[i].length != j+1) System.out.print(",");
			}
			System.out.println("");
		}
		System.out.println("=========");
	}

두번째행 첫번째열의 값이 첫번째행에 무조건 있다는 전제하에 작성한 코드입니다.

또한, 두번째 행부터는 열길이에 상관없이 첫번째행의 값들을 연속적으로 가져옵니다.

댓글 0