알고리즘 기초 - 11 (N행 N열 사각형 출력 (ㄹ자 모양으로))
Algorithm/풀었던문제 2019. 12. 12. 13:58
10번과는 다르게 이번에는 ㄹ자 모양으로 중첩 반복문을 사용하여 출력하여야 한다.
if문을 사용해서 분기를 만들어서 홀수행일때와 짝수행일때 서로 다른순서로 값이 출력되게 하여야 한다.
홀수행 1 2 3 4 (작은값 -> 큰값)
짝수행 8 7 6 5 (큰값 -> 작은값)
Main.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 | package Problem11; import java.util.Scanner; public class Main { public static void main(String[] args) { //ㄹ자 배열을 만들기 위해서 숫자 하나를 입력받는다. System.out.println("숫자를 입력하세요."); int n; Scanner scan = new Scanner(System.in); n = scan.nextInt(); //입력받은 n만큼의 행과열을 가진 2차원 배열을 만든다. int arr[][] = new int[n][n]; // n=3일때 // 1 2 3 // 6 5 4 // 7 8 9 //짝수행일때는 위쪽 for문을 타고 홀수행일때는 아래 for문을 탄다. //Why?? //홀수 행일때는 1 2 3 4 이런식으로 숫자가 증가하고, //짝수 행일때는 8 7 6 5 이런식으로 반대 방향으로 숫자가 증가하기 때문에 if문으로 분기를 주어서 다른 for문을 사용해서 값을 변경해주어야 한다. for (int i = 0; i < n; i++) { if (i % 2 == 0) { for (int j = 0; j < n; j++) { arr[i][j] = i * n + j + 1; } }else { for (int j = n-1; j >= 0; j--) { arr[i][j] = i * n + n - j; } } } //위쪽 for문에는 배열안에 값을 집어넣는 것이고, 이쪽 for문은 넣은 값들을 출력하는 for문이다. for(int i = 0; i < n; i++) { for(int j = 0; j < n; j++) { System.out.printf("%4d", arr[i][j]); } System.out.println(); } } } | cs |
출력 결과
출처
https://www.youtube.com/watch?v=RAHfSfIFL1M&list=PLVoihNyHW4xkm_KJ8_N8X7F6EQP4uSRyR&index=12
'Algorithm > 풀었던문제' 카테고리의 다른 글
알고리즘 기초 - 13 ( N행 N열 사각형 출력 ) (0) | 2019.12.17 |
---|---|
알고리즘 기초 - 12 (N행 N열 사각형 출력 (세로 Z자 모양으로)) (0) | 2019.12.16 |
알고리즘 기초 - 10 (N행 N열 사각형 출력) (0) | 2019.12.12 |
알고리즘 기초 - 9 (각 자릿수 합 구하기) (0) | 2019.12.11 |
알고리즘 기초 - 8 (팩토리얼[!]) (0) | 2019.12.10 |