ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 21 ~ 30번
    java codingtest 2022. 10. 27. 14:41

     

    21번 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.

     

     

    import java.util.Scanner;
    
    public class Main {
    	public static void main(String[] args) {
    		Scanner scan = new Scanner(System.in);
    		
    		while(scan.hasNextInt()) {
    			int a = scan.nextInt();
    			int b = scan.nextInt();
    			
    			System.out.println(a+b);
    		}
    	}
    }

    이 문제에서 가장 중요한 점이 파일 종료 조건이 없이 그냥 입력이 주어졌다는 것이다.

     입력에서 더이상의 읽을 수 있는 데이터가 존재하지 않을 때 반복문을 종료하라는 것이다.

    (정수 이외의 문자열이 들어왔을 때 반복문 끝냄)

    hasNextInt() = 다음 요소에 읽어 올 요소가 있는지 확인 하는 메소드 있으면 true, 없으면 false 를 반환한다. 

     

     

     

    22번

    총 N개의 정수가 주어졌을 때, 정수 v가 몇 개인지 구하는 프로그램을 작성하시오.

     

     

    import java.util.Scanner;
    
    public class Main {
    	public static void main(String[] args) {
    		Scanner scan = new Scanner(System.in);
    		
    		int n = scan.nextInt();
    		int[] arr = new int[n];
    		
    		for(int i=0; i<arr.length; i++) {
    			arr[i] = scan.nextInt();
    		}
    		
    		int v = scan.nextInt();
    		
    		int count = 0;
    		
    		for(int i=0; i<arr.length; i++) {
    			if(arr[i] == v) {
    				count++;
    			}
    		}
    		System.out.println(count);
    	}
    }

    Array 타입을 미리 선언한  상태에서 방의 갯수를 집어넣은 뒤, for문을 통해서 값들을 안에 넣는다.

    arr를 반복문 돌려서 값을 분리한다음 그것들 중에 v와 맞는 것이 있으면 count 변수의 숫자가 올라가도록 설정한다.

     

     

     

    23번

    정수 N개로 이루어진 수열 A와 정수 X가 주어진다. 이때, A에서 X보다 작은 수를 모두 출력하는 프로그램을 작성하시오.

     

     

    import java.util.Scanner;
    
    public class Main {
    	public static void main(String[] args) {
    		Scanner scan = new Scanner(System.in);
    		
    		int n = scan.nextInt();
    		int v = scan.nextInt();
    		int[] arr = new int[n];
    		
    		for(int i=0; i<arr.length; i++) {
    			arr[i] = scan.nextInt();
    			if(arr[i] < v) {
    				System.out.print(arr[i] + " ");
    			}
    		}
    	}
    }

    마찮가지로 array 타입을 사용한다. 반복문을 돌려 각 방 순서대로 값을 넣어준 뒤, if문을 사용하여 v 값보다 작은 숫자를 호출하도록 설정하였다.

     

     

     

    24번

    N개의 정수가 주어진다. 이때, 최솟값과 최댓값을 구하는 프로그램을 작성하시오.

     

     

    import java.util.Scanner;
    
    public class Main {
    	public static void main(String[] args) {
    		Scanner scan = new Scanner(System.in);
    		
    		int n = scan.nextInt();
    		int[] arr = new int[n];
    		
    		
    		for(int i=0; i<arr.length; i++) {
    			arr[i] = scan.nextInt();
    			}
    		
    		int min = arr[0];
    		int max = arr[0];
    
    		for(int i = 0; i < arr.length; i++){
    		    if(arr[i] < min) {
    		        min = arr[i];
    		    }
    		    if(max < arr[i]) {
    		        max = arr[i];
    		    }
    		}
    		System.out.print(min + " " + max);
    	}
    }

     

     

    25번

    9개의 서로 다른 자연수가 주어질 때, 이들 중 최댓값을 찾고 그 최댓값이 몇 번째 수인지를 구하는 프로그램을 작성하시오.

     

     

    import java.util.Arrays;
    import java.util.Scanner;
    
    public class Main {
    	public static void main(String[] args) {
    		Scanner scan = new Scanner(System.in);
    		
    		int[] arr = new int[9];
    		
    		
    		for(int i=0; i<arr.length; i++) {
    			arr[i] = scan.nextInt();
    			}
    		
    		int max = arr[0];
    		int o = 0;
    
    		for(int i = 0; i < arr.length; i++){
    		    if(max < arr[i]) {
    		        max = arr[i];
    		    }
    		    if(max == arr[i]) {
    		    	o = i;
    		    }
    		}
    		System.out.println(max);
    		System.out.println(o + 1);
    	}
    }

     

    26번

    X대학 M교수님은 프로그래밍 수업을 맡고 있다. 교실엔 학생이 30명인데 과제는 28명이 제출하였다 안 낸 2명을 찾으시오

     

     

    import java.util.Arrays;
    import java.util.Scanner;
    
    public class Main {
    	public static void main(String[] args) {
    		Scanner scan = new Scanner(System.in);
    
    		int[] arr2 = new int[31];
    
    		try {
    			for(int i=1; i<29; i++) {
    				int arr = scan.nextInt();
    				arr2[arr] = 1;
    			}
    			for(int i=1; i<arr2.length+1; i++) {
    				if(arr2[i] != 1) {
    					System.out.println(i);
    				}
    			}			
    		} catch (Exception e) {
    			
    		}
    	}
    }

    try, catch를 사용하지 않으면 err 발생하기에 넣어주었다.

     

     

    27번

    두 자연수 A와 B가 있을 때, A%B는 A를 B로 나눈 나머지 이다. 예를 들어, 7, 14, 27, 38을 3으로 나눈 나머지는 1, 2, 0, 2이다. 수 10개를 입력받은 뒤, 이를 42로 나눈 나머지를 구한다. 그 다음 서로 다른 값이 몇 개 있는지 출력하는 프로그램을 작성하시오.

     

     

    package test.main;
    
    import java.util.Arrays;
    import java.util.Scanner;
    
    public class Main {
    	public static void main(String[] args) {
    		Scanner scan = new Scanner(System.in);
    
    		int[] arr = new int[10];
    		int count = 0;
    
    		try {
    			for(int i=0; i<10; i++) { // 10개 숫자를 입력한 것을 42로 나눈다.
    				arr[i] = scan.nextInt() % 42;
    			}
    			for(int i=0; i<10; i++) { // 중복된 값이 있는지 확인한다.
    				int tmp = 0; // 초기값이 0이라서 최초 같은 숫자 한번은 올라간다.
    				for(int j = i+1; j < 10; j++) { // i 와 j의 값을 비교하여 같으면 증가
    					if(arr[i] == arr[j]) {
    						tmp += 1;
    					}
    				}
    				if(tmp == 0)count++; // 같지 않으면 카운트를 증가시킨다.
    			}
    			System.out.println(count);
    		} catch (Exception e) {
    
    		}
    	}
    }

     

     

    28번

    세준이는 기말고사를 망쳤다. 세준이는 점수를 조작해서 집에 가져가기로 했다. 일단 세준이는 자기 점수 중에 최댓값을 골랐다. 이 값을 M이라고 한다. 그리고 나서 모든 점수를 점수/M*100으로 고쳤다.

    예를 들어, 세준이의 최고점이 70이고, 수학점수가 50이었으면 수학점수는 50/70*100이 되어 71.43점이 된다.

    세준이의 성적을 위의 방법대로 새로 계산했을 때, 새로운 평균을 구하는 프로그램을 작성하시오.

     

     

    import java.util.Arrays;
    import java.util.Scanner;
    
    public class Main {
    	public static void main(String[] args) {
    		Scanner scan = new Scanner(System.in);
    
    		int a = scan.nextInt();
    		double[] arr = new double[a];
    
    		for(int i=0; i<a; i++) {
    			arr[i] = scan.nextDouble();
    		}
    		
    		double sum = 0;
    		Arrays.sort(arr);
    		// sort는 Arrays class를 사용하여 사용 가능. 오름차순 정렬으로 최댓값이 배열의 마지막 원소가 된다.
    		
    		for(int i=0; i<arr.length; i++) {
    			sum += (arr[i] / arr[arr.length-1] * 100);
    		}
    		System.out.println(sum / arr.length);
    	}
    }

    Arrays.sort함수를 기억해놓자 오름차순 정렬이 된다.

     

     

    29번

    세준이는 기말고사를 망쳤다. 세준이는 점수를 조작해서 집에 가져가기로 했다. 일단 세준이는 자기 점수 중에 최댓값을 골랐다. 이 값을 M이라고 한다. 그리고 나서 모든 점수를 점수/M*100으로 고쳤다.

    예를 들어, 세준이의 최고점이 70이고, 수학점수가 50이었으면 수학점수는 50/70*100이 되어 71.43점이 된다.

    세준이의 성적을 위의 방법대로 새로 계산했을 때, 새로운 평균을 구하는 프로그램을 작성하시오.

     

     

    import java.util.Arrays;
    import java.util.Scanner;
    
    public class Main {
    	public static void main(String[] args) {
    		Scanner scan = new Scanner(System.in);
    
    		int a = scan.nextInt();
    		double[] arr = new double[a];
    
    		for(int i=0; i<a; i++) {
    			arr[i] = scan.nextDouble();
    		}
    		
    		double sum = 0;
    		Arrays.sort(arr);
    		// sort는 Arrays class를 사용하여 사용 가능. 오름차순 정렬으로 최댓값이 배열의 마지막 원소가 된다.
    		
    		for(int i=0; i<arr.length; i++) {
    			sum += (arr[i] / arr[arr.length-1] * 100);
    		}
    		System.out.println(sum / arr.length);
    	}
    }

    예제 출력이 소숫점으로 되어있기 때문에 double을 사용하였다.

    Arrays class에 sort 메소드를 사용하여 오름차순 정렬을 하였다.

    최댓값이 제일 뒤로 가기때문에 점수에서 최댓값을 나눠 100을 곱한 합계를 만들었다.

    그것을 합계에서 과목수를 나눈 값을 호출하였다.

     

     

    'java codingtest' 카테고리의 다른 글

    11 ~ 20번  (0) 2022.10.23
    1~10번  (0) 2022.10.23

    댓글

Designed by Tistory.