본문 바로가기
  • 마침표 보다 쉼표를 나타내자
프로그래밍/JAVA

4x4배열 랜덤값 10개만 바꾸기( X )

by Y코더 2022. 12. 8.
728x90

이 문제를 풀때

모든 풀이들이 모든 값을 바꾸고 나서

0으로 6개를 바꾸는 것이 였다.

 

하지만 나는 처음부터 10개만 바꾸고 싶었다.

 

그래서 랜덤으로 좌표를 찍고 그 좌표를 문자열로 저장해 비교하고 싶었다.

public class Q10 {

	public static void main(String[] args) {
		
		//2차원 배열 선언
		int [][]arr1 = new int [4][4];
		String [][]arr2 = new String [4][4];
		
		//배열 저장
		for(int i=0; i<10; i++) {
			
			//랜덤 생성
			int Q = (int)(Math.random()*10+1);
			int ran1 = (int)(Math.random()*4);
			int ran2 = (int)(Math.random()*4);
			
			//배열에 값 저장
			arr1[ran1][ran2] = Q;
			arr2[ran1][ran2] = String.valueOf(ran1)+","+String.valueOf(ran2);
			
			//값이 중복 되면 다시
			for(int x=0; x<4; x++) {
				for(int y=0; y<4; y++) {
				String res1 = String.valueOf(x)+","+String.valueOf(y);
				if(res1.equals(arr2[ran1][ran2])) {
					int G = (int)(Math.random()*10+1);
					arr1[ran1][ran2] = G;
					i--;
				}
					}
				}
			}
		
		//출력하기
		for(int x=0; x<4; x++) {
			for(int y=0; y<4; y++) {
				System.out.print(arr1[x][y]+"\t");
			}
			System.out.println();
		}

	}

}

이 코드는 작동하지 않는다...

 

그리고 제일 하면 안되는 프로그램인

처음부터 검색해서 중복을 검사하는

비효율적인 코드가 짜여져있다.

 

그래도 글을 쓴 이유가 있다.

 

생각한 것들이 내 마음대로 만들지 못한다는 분함을 저장해두고 싶었다.

더 열심히 공부해서 이 문제는 꼭 내 뜻대로 만들고 싶다.

728x90