'Algorithm'에 해당되는 글 40건

  1. 2019.12.18 알고리즘 기초 - 16 ( 별 출력 - 1 )
  2. 2019.12.18 알고리즘 기초 - 15 ( 구구단 출력 )
  3. 2019.12.17 알고리즘 기초 - 14 ( 숫자 갯수 출력 )
  4. 2019.12.17 알고리즘 기초 - 13 ( N행 N열 사각형 출력 )
  5. 2019.12.16 알고리즘 기초 - 12 (N행 N열 사각형 출력 (세로 Z자 모양으로))
  6. 2019.12.12 알고리즘 기초 - 11 (N행 N열 사각형 출력 (ㄹ자 모양으로))
  7. 2019.12.12 알고리즘 기초 - 10 (N행 N열 사각형 출력)
  8. 2019.12.11 알고리즘 기초 - 9 (각 자릿수 합 구하기)

알고리즘 기초 - 16 ( 별 출력 - 1 )

Algorithm/풀었던문제 2019. 12. 18. 12:26



중첩반복문을 사용해서 줄을 넘어갈때마다 " * " 을 하나씩 더 출력해서 *모양 산을 만들면 된다.


숫자 4를 입력시.


*

**

***

**** 처럼 출력이 되면 된다.

............






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
package Problem16;
 
import java.util.Scanner;
 
public class Main {
 
    public static void main(String[] args) {
        
        System.out.println("숫자를 입력하세요.");
        
        int number;
        
        Scanner scan = new Scanner(System.in);
        
        number = scan.nextInt();
        
        String a = "*";
        
        //중첩반복문을 사용해서 줄이 넘어갈때마다 *을 추가로 더 출력한다.

        for (int i = 1; i <= number; i++) {
            for (int j = 0; j < i; j++) {
            
            System.out.print(a);
            
            }
            
            System.out.println();
        
        }
        
    }
    
}
 
 
cs



출력 결과





출처


https://www.youtube.com/watch?v=fOCpho8FfXU&list=PLVoihNyHW4xkm_KJ8_N8X7F6EQP4uSRyR&index=17

:

알고리즘 기초 - 15 ( 구구단 출력 )

Algorithm/풀었던문제 2019. 12. 18. 10:16



구구단의 범위를 계산할 숫자 두개를 입력받고,


중첩 반복문을 사용해서 두개의 숫자사이의 구구단을 계산하면 된다.


그리고 단수를 계속 올려야하므로 후증가를 사용해서 안쪽에 있는 반복문이 


한바퀴 회전할 때마다 1씩 증가시켜주면 된다.





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
package Problem15;
 
import java.util.Scanner;
 
public class Main {
 
    public static void main(String[] args) {
 
        System.out.println("숫자를 두개 입력하시오.");
 
        // 구구단의 범위를 계산할 숫자 두개를 입력받는다 s부터 f까지의 구구단을 계산
        int s;
        int f;
 
        Scanner scan = new Scanner(System.in);
 
        s = scan.nextInt();
        f = scan.nextInt();
 
        System.out.printf("입력: %d %d", s, f);
 
        System.out.println();
 
        // 중첩 반복문을 사용해서 s부터 f까지의 구구단을 출력한다.
 
        // 구구단은 계산할때 9까지 곱한다음 s에 1을 올려서 단수를 올려야 하므로 s에 후증가를 써서 구구단을 계산한다.
 
        for (int a = s; a <= f; a++) {
            for (int i = 1; i < 10; i++) {
 
                System.out.printf("%d * %d " + "=" + s * i, s, i);
 
                System.out.println();
 
            }
 
            s++;
            System.out.println();
 
        }
 
    }
 
}
 
cs



출력 결과




출처


https://www.youtube.com/watch?v=gcjG-BMwI5s&list=PLVoihNyHW4xkm_KJ8_N8X7F6EQP4uSRyR&index=16

:

알고리즘 기초 - 14 ( 숫자 갯수 출력 )

Algorithm/풀었던문제 2019. 12. 17. 15:15



배열을 만들고 입력한 숫자를 10으로 나눠서 나온 나머지숫자를 배열의 칸마다 넣고,


배열의 요소를 출력하면 숫자를 하나씩 분리해서 출력할 수 있다.




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
package Problem14;
 
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();
        
        System.out.println("입력 : "+n);
        
        System.out.println();
        
    
        int arr[] = new int[10];    

//0 ~9 까지의 입력된 수를 카운트하기 위한 용도의 배열
        
        //배열의 한칸한칸마다 숫자를 하나씩 넣어야 된다.
        
        //숫자를 하나씩 추출할때는 10으로 나눈다음 나머지를 하나씩 배열에 넣는식으로 계산한다.
        
        //그리고 한바퀴 돌때마다 n을 10으로 나눈만큼 계속 감소시켜서 나머지들을 하나씩 구한다.
        
        //ex 4232입력 -> 2
        //    423 -> 3
        //    42 -> 2...
        
        while (n > 0) {
            
            arr[n % 10]++;

            /= 10;
        }
        
        
        for (int i = 0 ; i < 10; i++) {
            
            System.out.println(i+":"+arr[i]);
        }
    
    }
}
 
cs




출력 결과






출처


https://www.youtube.com/watch?v=-9Ne6s2dVH0&list=PLVoihNyHW4xkm_KJ8_N8X7F6EQP4uSRyR&index=15

:

알고리즘 기초 - 13 ( N행 N열 사각형 출력 )

Algorithm/풀었던문제 2019. 12. 17. 11:42



문제의 예시된 배열을 살펴보면 아래와 같다.


숫자 4를 입력시 1부터 4까지의 배수들이 배열에 출력이 되어야 한다.


0,0 = 1 / 0,1 = 2 / 0,2 = 3 / 0,3 = 4       1의 배수들


1,0 = 2 / 1,1 = 4 / 1,2 = 6 / 1,3 = 8       2의 배수들


2,0 = 3 / 2,1 = 6 / 2,2 = 9 / 2,3 = 12     3의 배수들


3,0 = 4 / 3,1 = 8 / 3,2 = 12 / 3,3 = 16    4의 배수들


이전 문제와 같이 배열에 규칙을 찾아내서 배열안에 값을 하나씩 대입시켜 주면 된다.


내가 찾은 규칙  = arr[j][i] = i + j+ 1 + ( i * j )




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
package Problem13;
 
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();
        
        // 입력한 숫자에 맞는 크기를 가진 배열을 생성함
        int[][] arr = new int[n][n];
        
        
        
        
        
        // 배열안에 값을 넣는 부분
        for (int i = 0; i < n; i++) {
        
            for (int j = 0; j < n; j++) {
                
                arr[j][i] = i + j+ 1 + ( i * j ) ;
                
            }
            
        }
            
        
        //위에서 넣은 값들을 출력해주는 부분.
        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=T_2P_JwESH8&list=PLVoihNyHW4xkm_KJ8_N8X7F6EQP4uSRyR&index=14


:

알고리즘 기초 - 12 (N행 N열 사각형 출력 (세로 Z자 모양으로))

Algorithm/풀었던문제 2019. 12. 16. 15:38




이번에는 열이 고정되고 행이 변화되는 식으로 사각형을 출력 하여야한다. (열고정 행변화)


아까와는 반대로 중첩반복문을 사용할때 바깥쪽 for문에 열을 넣고, 안쪽 for문에 행을 넣어야 한다. 


(그렇게 해야 행이 내가 입력한 숫자만큼 다 회전한 후에 열이 변화하기 때문이다.)


그리고 행이 1번 회전할때마다 num이라는 변수를 1씩 증가시켜서 배열안에 계속 넣어주면 된다.






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
package Problem12;
 
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();
        
        //입력받은 숫자만큼의 크기를 가진 배열을 생성함.
        int [][] arr = new int [n][n];
        
        //아까와는 다르게 열이 고정된 상태에서 행이 변화하는 사각형이다.
        
        //열고정 행변화이므로 아까와는 다르게 i와 j의 위치를 바꿔서 순서대로 값을 넣어준다.
        
        //값을 하나씩 넣어주어야 하므로 num이라는 변수를 추가해서 for문이 반복될 때마다 1씩 증가시켜 준다.
        
        int num = 1;
        for (int i = 0; i < n; i++) {
            for (int j = 0; j< n; j++) {
                
                arr[j][i] = num;
                num++;
            }
        
        }
        
 
        //배열에 담긴 값들을 출력하는 부분
        
        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=omAFIdaREGg&list=PLVoihNyHW4xkm_KJ8_N8X7F6EQP4uSRyR&index=13

:

알고리즘 기초 - 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


 

:

알고리즘 기초 - 10 (N행 N열 사각형 출력)

Algorithm/풀었던문제 2019. 12. 12. 12:48

 

 

행을 반복하는 반복문과 열을 반복하는 반복문이 필요하므로

 

중첩 반복문을 사용해서 해결하면 된다.

 

 

 

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
import java.io.IOException;
import java.util.Scanner;
 
public class Main {
 
    public static void main(String[] str) {
 
        System.out.println("숫자를 입력하세요.");
        
        int inputnum;
        
        Scanner scan = new Scanner(System.in);
        
        inputnum = scan.nextInt();
        
        //만약 inputnum = 3 입력시
        
        // 1 2 3
        // 4 5 6
        // 7 8 9
        
        // 3행 3열 출력 
        
        //행을 반복하는 반복문과 열을 반복하는 반복문이 필요하므로 중첩 반복문이 필요하다.
        
        
        //각 행렬마다 들어갈 숫자를 num변수로 지정한다.
        int num = 1;
        
        for (int j = 0; j < inputnum; j++) {
            
            for (int i = 0; i < inputnum; i++) {
                
                //%옆에 숫자는 해당 숫자만큼 칸을 떨어뜨려서 보기좋게 만들때 사용한다.
                System.out.printf("%4d", num);
                
                //num을 하나씩 증가시키면 1씩 증가한 숫자가 계속 들어가게 된다.
                num++;
                
            }
            
            System.out.println();
            
        }
 
    }
    
}
 
 
cs

 

 

 

출처

 

https://www.youtube.com/watch?v=NldRYbDqgKw&list=PLVoihNyHW4xkm_KJ8_N8X7F6EQP4uSRyR&index=11

:

알고리즘 기초 - 9 (각 자릿수 합 구하기)

Algorithm/풀었던문제 2019. 12. 11. 14:39



  ※각 자릿수의 합 구하기※


  각 자릿수를 하나씩 뽑아내야되기 때문에


  10으로 나눈 다음에 그 몫만 계산하면 한 자리씩 뽑아낼 수 있다.


  1234 => 123 => 12 => 1

       4         3       2      1  => 각 자릿수의 합 10





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
package Problem9;
 
import java.util.Scanner;
 
public class Main {
 
    public static void main(String[] args) {
 
        //문제 : 입력된 수의 각 자릿수 합을 구하시오.
        
        while(true) {
        
        System.out.println("숫자를 입력하세요.");
        
        
        //숫자를 입력받기
        int number;
        Scanner scan = new Scanner(System.in);
        number = scan.nextInt();
        
        //각 자릿수를 하나씩 뽑아내야되기 때문에
        
        //10으로 나눈다음에 그 몫만 계산하면 다음과 같이 한 자리씩 뽑아낼수 있다.
        
        // 1232 => 123 => 12 => 1
        // 2         3       2    1  => 8
        
        int total = 0;
        
        while(number > 0) {
        
            total += number % 10;
            
            
            //10으로 number을 나눠주어서 다음 자릿수로 넘어갈 수 있도록 한다.
            
            //1234를 입력 받았을 시
            
            //1234 -> 123 -> 12...
            number /= 10;
            
                }
        
        System.out.println("입력된 수의 각 자릿수의 합은? " +total);
        
        
        System.out.println();
        
        }
        
    }
}
cs




출력 결과






출처


https://www.youtube.com/watch?v=RrjHOX1PF1A&list=PLVoihNyHW4xkm_KJ8_N8X7F6EQP4uSRyR&index=10

: