ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 자바 알고리즘(5)
    자바페스티벌 2022. 5. 6. 18:40

    ex29 작은 수 출력

    N과 X를 입력 받아서 N개의 정수를 입력 받습니다. N개의 숫자 중 X보다 작은 수만 출력해보겠습니다.

    Scanner sc = new Scanner(System.in);
    
    System.out.print("N 입력 >> ");
    int n = sc.nextInt();
    
    System.out.print("X 입력 >> ");
    int x = sc.nextInt();
    
    int[] arr = new int[n];
    
    for (int i = 0; i < n; i++) {
    	System.out.print(i + 1 + "번째 정수 입력 >> ");
    	arr[i] = sc.nextInt();
    }
    
    String result = "결과 >> ";
    
    for (int i = 0; i < n; i++) {
    	if (x > arr[i]) {
    		result += arr[i]+" ";
    	}
    }
    
    System.out.println(result);

     

     

     

    ex30 대시의 개수 출력

    대시('_')문자로 구성된 형태의 숫자를 주어진 숫자와 같이 출력하고 싶을 때 사용되게 되는 대시의 개수를 출력하는 프로그램을 작성해보겠습니다.

    System.out.print("첫자리 0을 제외한 숫자를 입력해주세요 >> ");
    Scanner sc = new Scanner(System.in);
    String n = sc.next();
    		
    // 입력된 문자열을 split()함수로 한 문자씩 나눠주자
    String[] arr = n.split("");
    		
    int sum = 0;
    		
    for(int i =0; i<arr.length; i++) {
    	switch(arr[i]) {
    	case "0" :
    		sum+= 6;
    		break;
    	case "1" :
    		sum+= 2;
    		break;
    	case "2" :
    		sum+= 5;
    		break;
    	case "3" :
    		sum+= 5;
    		break;
    	case "4" :
    		sum+= 4;
    		break;
    	case "5" :
    		sum+= 5;
    		break;
    	case "6" :
    		sum+= 6;
    		break;
    	case "7" :
    		sum+= 3;
    		break;
    	case "8" :
    		sum+= 7;
    		break;
    	case "9" :
    		sum+= 6;
    		break;	
    	}
    }
    		
    System.out.println("대시('_')의 총 합 >> " + sum);

     

     

     

    ex31 (세 자리 수) * (세 자리 수)

    (1), (2)번을 입력 받아 결과 화면처럼 (3), (4), (5), (6)번을 출력하는 프로그램을 작성해보겠습니다.

    Scanner sc = new Scanner(System.in);
    		
    System.out.print("첫 번째 숫자 입력 >> ");
    int num1 = sc.nextInt();
    System.out.print("두 번째 숫자 입력 >> ");
    int num2 = sc.nextInt();
    		
    int output1 = num1*(num2%100%10);
    int output2 = num1*(num2%100/10);
    int output3 = num1*(num2/100);
    		
    System.out.println(output1);
    System.out.println(output2);
    System.out.println(output3);
    System.out.println(num1*num2);

     

     

     

    ex32 채점 프로그램

    'o'는 점수가 누적되는 방식으로 채점되는데 이전부터 자신을 포함한 연속된 'o'의 개수 만큼의 점수로 채점이 됩니다. 예를 들어 'oooxoo'라는 표시가 있다면 순서대로 1+2+3+0+1+2=9 으로 총점이 계산됩니다.  학생이 푼 시험지에 정답, 오답 여부가 표시되어 있을 때 총점을 구하는 프로그램을 작성해보겠습니다.

    System.out.println("==== 채점하기 ====");
    Scanner sc = new Scanner(System.in);
    String input = sc.next();
    		
    String[] arr = input.split("");
    		
    int cnt = 0;
    int sum = 0;
    		
    for(int i = 0; i < arr.length; i++) {
    	switch(arr[i]) {
    	case "o" :
    		cnt ++;
    		sum += cnt;
    		break;
    	case "x" :
    		cnt = 0;
    		break;
    	}
    }
    		
    System.out.println(sum);

     

     

     

    ex33 powerN() 메소드

    2개의 정수 base, n을 받아 base의 n제곱 만큼 값을 반환하는 powerN() 메소드를 작성해보겠습니다.

    public class Main {
    	public static void main(String args[]) {
            int base = 2;
            int n = 3;
            int result = powerN(base, n);
            
            System.out.println("결과 확인 : " + result);
    	}
        	public static int powerN(int base,int n) {
    		int result = base;
    		for(int i =1; i < n; i++) {
    			result *= base;
    		}
    		return result;
    	}
    }

     

     

     

    ex34 10진수 변환

    문자열 형태의 2진수를 입력받아 10진수로 바꾸는 프로그램을 작성해보겠습니다.

    String str = "00101000";
    String[] arr = str.split("");
    
    int sum = 0;
    int square = 1;
    
    for (int i = arr.length - 1; i >= 0; i--) {
    	if (arr[i].equals("1")) {
    		sum = sum + square * 1;
    		square = square*2;
    	}else {
    		square *=2;
    	}
    }
    
    System.out.println(str + "(2) = " + sum + "(10)");

     

     

     

    ex35 두 수의 합

    랜덤으로 정수 2개를 뽑아 사용자는 두 수의 합을 입력합니다. 두 수의 합과 입력한 수가 일치하면 "Success", 두 수의 합과 입력한 수가 일치하지 않으면 "Fail"을 출력합니다. 기회는 5번이며 5번 틀리면 GAME OVER입니다.

    Scanner sc = new Scanner(System.in);
    
    Random rd = new Random();
    
    int cnt = 0;
    
    while (true) {
    	int num1 = rd.nextInt(10) + 1;
    	int num2 = rd.nextInt(10) + 1;
    
    	System.out.print(num1 + " + " + num2 + " = ");
    	int answer = sc.nextInt();
    
    	if (num1 + num2 == answer) {
    		System.out.println("SUCCESS!");
    	} else {
    		System.out.println("Fail..");
    		cnt++;
    	}
    
    	if (cnt == 5) {
    		System.out.println("GAME OVER!");
    		break;
    	}
    }

     

     

     

    ex36 알파벳 빈도 구하기

    입력된 문장에 포함된 알파벳의 빈도를 대소문자 구별없이 구하는 프로그램을 작성해보겠습니다.

    Scanner sc = new Scanner(System.in);
          System.out.println("==== 알파벳 빈도수 구하기 ====");
          System.out.print("입력 >> ");
          String input_user = sc.nextLine();
          String[] store = input_user.split("");
          String[] compareSmall = {"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"};
          String[] compareLarge = {"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"};
          int[] cntAalph = new int[26];
          int cnt = 0;
          for(int i=0; i<store.length; i++) {
             for(int j=0; j<26; j++) {
                if(store[i].equals(compareSmall[j]) || store[i].equals(compareLarge[j])) {
                   cntAalph[j]++;
                }else {
                   continue;
                }
             }
          }
          
          for(int i=0; i<26;i++) {
             System.out.println(compareSmall[i]+" : "+cntAalph[i]);
          }

     

     

     

    ex37 N! 값 구하기

    1보다 큰 정수(N)를 입력하여 N!값을 구해보겠습니다. 

    (팩토리얼이란 N의 수보다 작거나 같은 모든 양의 정수의 곱입니다.)

    System.out.print("입력 : ");
    Scanner sc = new Scanner(System.in);
    int num = sc.nextInt();
    		
    int result = 1;
    		
    System.out.print("출력 : ");
    for(int i =1; i <= num; i++) {
    	result *= i;
    }
    		
    System.out.println(result);

    '자바페스티벌' 카테고리의 다른 글

    자바 알고리즘(4)  (0) 2022.05.06
    자바 알고리즘(3)  (0) 2022.05.05
    자바 알고리즘(2)  (0) 2022.05.04
    자바 알고리즘 (1)  (0) 2022.05.04

    댓글

Designed by Tistory.