loading
본문 바로가기
Algorithm/Use JAVA

1, 0 행렬처럼 찍기

by pikiforyou 2020. 8. 13.

 

 

 

	1 0 0 0
	0 1 0 0
	0 0 1 0
	0 0 0 1 
    
    이런식으로 콘솔에 찍히려면 어떻게 풀어야하는가? 
    

 

public static void main(String[] args){
	for (int k = 1; k <= 5; k++) {
		for (int j = 1; j <= 4; j++) {
			if (k == j) System.out.printf("%-2d", 1);
			else System.out.printf("%-2d", 0);
	}
	//줄바꿈
	System.out.println();
}

 

행()과 열()로 규칙성을 찾고 푸는것이 좋다.

int k가 1일때 int j도 1이며 숫자도 1로 찍혀있다.

ink k가 2일때 int j도 2이며 숫자도 1로 찍혀있다.

즉, 보기쉽게 적으면 (1,1) (2,2) (3,3) (4,4) 이때만 숫자 1이 찍혀있고, 나머지는 0이 찍힌다.

 

따라서 이중포문을 돌며 k == j일때 숫자1이 찍히게 해주면 해결할 수 있다.

 

 

 

 

 

비슷한 방식의 문제를 하나 더 풀어보고자 한다.

 

	0 0 0 1
	0 0 1 0
	0 1 0 0
	1 0 0 0
    
    이런식으로 콘솔에 찍히게 하려면 ?

 

아까와는 반대의 방향이다. 

이도 마찬가지로 보기쉽게 적으면 (a, b) = (1, 4) (2, 3) (3, 2) (4, 1)이 된다.

이번 규칙은 a, b를 더하면 5가 될때만 숫자 1이 찍혀있다는 점이다.

 

public static void main(String[] args) {
	for (int i = 1; i <= 4; i++) {
		for (int j =1; j <= 4; j++) {
			if (i + j == 5) System.out.printf("%2d", 1);
			else System.out.printf("%2d", 0);
		}
		System.out.println();
	}
}

 

참고로 for문이 끝났을때 System.out.println(); 을 하면 한줄 띄어쓰기가 되므로

전부 한줄에 찍히지않고 원하는 모양대로 찍히게 된다.

 

 

 

 

 

댓글