[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차원 배열로 해보라고 하셔서 해보고 싶었습니다.ㅋㅋㅋ

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.