'Algorithm'에 해당되는 글 40건

  1. 2019.12.24 알고리즘 기초 - 24( 평균과 비율 )
  2. 2019.12.24 알고리즘 기초 - 23 ( 문자열 뒤집기 )
  3. 2019.12.23 알고리즘 기초 - 22 ( 팰린드롬 판별 )
  4. 2019.12.23 알고리즘 기초 - 21 ( 중복된 수 제거 )
  5. 2019.12.20 알고리즘 기초 - 20 ( 3.6.9 게임 )
  6. 2019.12.20 알고리즘 기초 - 19 ( 거듭제곱 )
  7. 2019.12.19 알고리즘 기초 - 18 ( 별 출력 - 3 )
  8. 2019.12.18 알고리즘 기초 - 17 ( 별 출력 - 2 )

알고리즘 기초 - 24( 평균과 비율 )

Algorithm/풀었던문제 2019. 12. 24. 13:50



가장 먼저 학생들 점수의 평균을 구하고, 평균점수 이상인 학생들의 수를 구한다.


그 다음 (평균점수 이상인 학생들의 수 / 총 학생수) * 100 을 하면 평균 점수 이상인 학생의 비율을 구할 수 있다.



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
package Problem24;
 
public class Main {
 
    public static void main(String[] args) {
 
        // 학생수와 점수를 입력, 평균 이상인 학생의 비율 구하기
 
        // 학생수
        int s_number = 7;
 
        // 학생들의 점수
        int[] s_c = new int[s_number];
 
        s_c[0= 100;
        s_c[1= 95;
        s_c[2= 90;
        s_c[3= 80;
        s_c[4= 70;
        s_c[5= 60;
        s_c[6= 50;
 
        // 총 점수
        int total = 0;
 
        // 평균점수 변수
        int ev = 0;
 
        // 평균 점수
        for (int i = 0; i <= s_number-1; i++) {
 
            total += s_c[i];
            
            if (i == s_number-1) {
 
                ev = total / s_number;
                System.out.println("평균점수:"+ev);
            }
 
        }
 
        // 평균점수 이상인 학생들의 수
        int s_n = 0;
 
        // 평균점수보다 높은 학생들의 수를 구하기
        for (int j = 0; j < s_c.length; j++) {
 
            // 평균 점수보다 학생의 점수가 높을 경우에는 우등생 인원수를 1씩 계속 증가시킴
            if (ev < s_c[j]) {
                
                s_n += 1;
 
            }
 
        }
        
        System.out.println("평균점수 이상인 학생들의 수 : "+s_n);
 
        // 마지막으로 평균보다 높은 학생들의 비율을 출력해보기
 
        // 평균보다 높은 학생들의 비율

        float s_ev = 0;
 
        // (우등생 / 총학생수) *100을 하면 평균보다 높은 학생의 비율이 나옴
        s_ev = (float) (s_n *100.0/ s_number);
 
// 소수 셋째자리 까지만 구해야 하므로 %.3f%n을 사용한다.
        System.out.format("평균보다 높은 학생들의 비율 : %.3f%n " ,s_ev);
 
    }
 
}
 
cs




출력 결과





출처


https://www.youtube.com/watch?v=2WDfsFITi5k&list=PLVoihNyHW4xkm_KJ8_N8X7F6EQP4uSRyR&index=25

:

알고리즘 기초 - 23 ( 문자열 뒤집기 )

Algorithm/풀었던문제 2019. 12. 24. 11:30



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
.package Problem23;
 
import java.lang.reflect.Array;
import java.util.Scanner;
 
public class Main {
 
    public static void main(String[] args) {
    
        System.out.println("문자열을 입력하세요.");
        
        String []a = new String[5];
        
        Scanner scan = new Scanner(System.in);
        
        for (int i = 0; i < a.length; i++) {
            
            a[i] = scan.next();
            
        }
        
        
        System.out.println();
        
        //입력된 값을 확인하는 부분
        System.out.print("입력된 값 : ");
        for (int c = 0; c < a.length; c++) {
            
            System.out.print(a[c]+" ");
            
        }
        
 
        System.out.println();
        
        //출력부분
        //뒤쪽 인덱스부터 차례로 거꾸로 출력한다. 
        
        System.out.print("뒤집은 값 : ");

        //-1을 하는 이유는 공백이 하나 들어있기 때문.
        for (int j = a.length-1; j >= 0; j--) {
            
            System.out.print(a[j]+" ");
            
        }
        System.out.println();
        
        
        //아래는 String문자열을 처음에 지정한 후에 위치를 바꾸어서 출력해본것
        
        String q = "ABCDE";
        
        System.out.println("String : " +q);
        
        
        System.out.print("String 뒤집은 값 : ");
        
        for(int a_1 = q.length()-1; a_1 >= 0 ; a_1--) {
            
            System.out.print(q.charAt(a_1));
            
        }
        
        
    }
    
}
 
cs




출력 결과


.




출처


https://www.youtube.com/watch?v=iYMY8bBnt2s&list=PLVoihNyHW4xkm_KJ8_N8X7F6EQP4uSRyR&index=24


:

알고리즘 기초 - 22 ( 팰린드롬 판별 )

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



팰린드롬 (palindrome)이란?


앞에서부터 읽던, 뒤에서부터 읽던 같은 단어를 말한다. (중간을 기준으로 앞, 뒤가 대칭이 되는 단어)


'aba' 나 '51315' 같은 단어를 팰린드롬이라고 하고, 'abc' 나 ''12345' 같은 단어는 팰린드롬이 아니다.



출처


https://mygumi.tistory.com/176




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
package Problem22;
 
import java.util.Scanner;
 
public class Main {
 
    public static void main(String[] args) {
 
        // 입력된 수가 팰린드롬인지 판별,
        // 팰린드롬이란 ??앞으로 읽던, 뒤에서 부터 읽던 같은 단어
 
        //int 타입은 정수타입이기 때문에 인덱스가 없어서 판별하기 힘드므로 String 타입을 사용한다.
        
        System.out.println("판별할 문자나 숫자를 입력하시오.");
        
        String n;
        
        Scanner scan = new Scanner(System.in);
        
        n = scan.nextLine();
        
        int len = n.length();
        
        //flag는 팰린드롬이면 그대로 true로 출력이 되고 아래 for문을 돌려서 if문에 해당이 되서
        //팰린드롬이 아니라면 false가 출력되어서 팰린드롬을 판별할 수 있다.

        boolean  flag = true;
        

        //궂이 끝까지 갈필요 없이 중간까지만 가면 되므로 len/2를 해준다.

        for (int i = 0; i < len/2; i++) {
            
            //if문의 좌항은 0번째 인덱스항 부터 계속 증가하면서 한칸씩 이동하고
            //우항은 끝쪽에 있는 인덱스항부터 계속 감소하면서 내려온다.
            //두 개의 값을 비교해서 서로 한번이라도 다르면 팰린드롬이 되지 못하므로,
            //flag에 false값을 주고, 출력하면 팰린드롬인지 아닌지 알 수 있다.

            if (n.charAt(i) != n.charAt(len-i-1)) {

                flag = false;

            }
            
        }
        
        System.out.println(flag);
    
    
    }
}
 
cs




출력 결과




출처


https://www.youtube.com/watch?v=gByou4ahmXs&list=PLVoihNyHW4xkm_KJ8_N8X7F6EQP4uSRyR&index=23

:

알고리즘 기초 - 21 ( 중복된 수 제거 )

Algorithm/풀었던문제 2019. 12. 23. 13:42



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
package Problem21;
 
import java.util.Scanner;
 
public class Main {
 
    public static void main(String[] args) {
 
        // 내가 입력한 값이 들어있으면 true를 리턴하는 arr배열을 생성
        boolean arr[] = new boolean[101];
 
        Scanner scan = new Scanner(System.in);
 
        int inArr[] = new int[101];

        // 배열안에 값들을 넣어준다.

        inArr[0= 1;

        inArr[1= 2;

        inArr[2= 2;

        inArr[3= 9;

        inArr[4= 9;

        inArr[5= 66;

        inArr[6= 92;
 
        // inArr에 값이 들어있다면 arr배열에 해당되는 inArr인덱스안의 값에 true를 넣어준다.
        for (int i = 0; i <= 100; i++) {
 
            // inArr[i]의 값이 한번이라도 나왔다는 의미에서 true를 넣어준다.
            arr[inArr[i]] = true;
 
        }
 
        for (int i = 1; i <= 100; i++) {
            if (arr[i]) {
 
                System.out.print(i + " ");
 
            }
 
        }
 
    }
 
}
 
cs



출력 결과



출처


https://www.youtube.com/watch?v=f7_eMzqIU70&list=PLVoihNyHW4xkm_KJ8_N8X7F6EQP4uSRyR&index=22

:

알고리즘 기초 - 20 ( 3.6.9 게임 )

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

 

 

 

 

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
import java.io.IOException;
import java.util.Scanner;
 
public class Main {
 
    //메인 메소드가 static이므로 static로 3.6.9가 
    //들어갔을때 숫자를 반환하는 메소드를 만든다.
 
    public static int getNum (int i){
        
        //3,6,9가 들어갔을때 카운트 해주는 변수 
        int j = 0;
        
        while(i > 0){
            
            //숫자를 한자리씩 계산하기 위해 10으로 나누어서 나머지가 3,6,9와 같으면
            //카운트 변수를 1씩 증가시키고, 다음자리수를 
            //계산하기 위해 i를 다시 10으로 나누어준다.
            
            if( i % 10 == 3 || i % 10 == 6 || i % 10 == 9)
            {
                j++;
            i /= 10;
                
            }
            
        }
        
        return j;
        
    }
 
 
    public static void main(String[] str) throws IOException {
        
    //100까지 3.6.9 게임 진행
    
    int number = 100;
    
    for(int i = 1; i <= number; i++){
        
        
        //위에 있는 함수로 계산한 값을 cnt 변수에 저장
       int cnt = getNum(i); 
       
       //cnt가 0이면 3,6,9 중에 숫자가 안들어있다는 것이기 때문에
       //숫자만 출력
       
       if (cnt == 0){
           
           System.out.print(i+" ");
           
       }else {
           
           for (int l = 0; l < cnt; l++){
               
               System.out.print("짝");
           }
           
           System.out.print(" ");
           
       }
       
    }
    
}
 
 
cs

 

 

 

출력 결과

 

 

 

출처

 

https://www.youtube.com/watch?v=rXNm4YpPVNc&list=PLVoihNyHW4xkm_KJ8_N8X7F6EQP4uSRyR&index=21

 

:

알고리즘 기초 - 19 ( 거듭제곱 )

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

 

 

 

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
 
 
import java.io.IOException;
import java.util.Scanner;
 
public class Main {
 
    public static void main(String[] str) throws IOException {
        
        System.out.println("숫자를 입력하세요.");
        
        //n은기본 숫자, m은 제곱할 승의 숫자
        int n = 7;
        int m = 5;
         
        //최종적으로 계산한 값을 total에 넣는다.
        //아래에서 계산한 값을 계속해서 곱해야하기 때문에 초기값으로 1을 준다. 
        int total = 1;
        
        //i를 1부터 시작해서 계속 1찍 증가시키면서 곱해주면 제곱이 된다.
        
        for(int i = 1; i < m; i++){
            
            total *= n; 
        }
        
        System.out.pritnln("정답:"+total);
        
    }
    
}
 
 
cs

 

 

 

출력 결과

 

 

 

 

출처

 

https://www.youtube.com/watch?v=vDgJbyT0VuE&list=PLVoihNyHW4xkm_KJ8_N8X7F6EQP4uSRyR&index=20

:

알고리즘 기초 - 18 ( 별 출력 - 3 )

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



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
package Problem18;
 
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();
 
        // 아까와 마찬가지로 중첩반복문을 사용함.
 
        // if안에 들어갈 내용이 중요함.
 
        for (int i = 0; i < number; i++) {
 
            for (int j = 0; j < number; j++) {
 
                if (i < number - (j + 1)) {
 
                    System.out.print(" ");
 
                } else {
 
                    System.out.print("*");
 
                }
 
            }
 
            System.out.println();
 
        }
 
    }
 
}
 
cs



출력 결과




출처


https://www.youtube.com/watch?v=wsGsmsDRdkQ&list=PLVoihNyHW4xkm_KJ8_N8X7F6EQP4uSRyR&index=19

:

알고리즘 기초 - 17 ( 별 출력 - 2 )

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


16번과 거의 동일하지만 if문을 사용해서 i > j (행이 열보다 클 때) 라는 조건을 주어서 공백을 출력한다.


2행은 1열이 공백, 3행은 1열과 2열이 공백이기 때문에 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
package Problem17;
 
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();
 
        //중첩반복문을 사용해서 *을 출력함.
        
        //2행부터 공백도 출력해야하기 때문에 if문을 사용해서 i > j라는 조건을 주어서 공백을 출력한다.
        
        // 2행은 1열이 공백 3행은 1열과 2열이 공백이기 때문에 i > j 라는 조건을 준다.
        
        for (int i = 0; i < number; i++) {
 
            for (int j = 0; j < number; j++) {
 
                if (i > j) {
                    
                    System.out.print(" ");
 
                } else {
                    
                    System.out.print("*");
 
                }
                
            }
            
            //열을 다 출력한 후에는 개행을 해주어야 하기 때문에 println으로 개행을 해준다.
            
            System.out.println();
            
        }
    }
}
cs



출력 결과






출처


https://www.youtube.com/watch?v=v-Rms3hEdgI&list=PLVoihNyHW4xkm_KJ8_N8X7F6EQP4uSRyR&index=18

: