-
자바 알고리즘(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