[15년 2학기] 2차원 배열

[13~15주차 | 프로그래밍 언어 및 실습 | 김대엽 교수님]

목표 : 2차원 배열(3×3)에 난수를 겹치지 않게 넣어보자

대충 짠 알고리즘

123

 

	for (i = 0; i < 9; i++) {
			puzzle[i / 3][i % 3] = rand() % 9;
			for (j = 0; j < i; j++)
			if (puzzle[i / 3][i % 3] == puzzle[j / 3][j % 3]) {
				i--;
			}
	}

분석

puzzle[i / 3][i % 3] : [0][0] > [0][1] > [0][2] > [1][0] > … 이렇게 증가하게된다.
for (j = 0; j < i; j++)
if (puzzle[i / 3][i % 3] == puzzle[j / 3][j % 3]) : 진하게된 부분이 처음 부터 방금 입력된 배열의 위치까지 비교해 준다. 기울어진 부분은 방금 입력된 배열의 위치를 나타내다.
i–; : 만약 같은 숫자가 입력된 배열의 위치를 찾게 된다면 방금 다시 입력을 위해 i값을 줄여주게 된다.
       <왜냐하면 for(j = 0;…)문을 나가게 되면 i의 값이 1증가하므로 미리 빼줌으로써 puzzle[i / 3][i % 3] = rand() % 9; 에 이전과 같은 i값을 넣어주게 된다.

 

망할 이거 때문에 엄청 고민함, 1차원 배열로 비교할 수도 있지만 2차원 배열로 해보라고 하셔서 해보고 싶었습니다.ㅋㅋㅋ

글의 문제가 있다면 댓글을 달아 주세요.

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.