• Test(1)

    2021. 6. 28.

    by. 와트

    ※ Java의 Naming Rule에 맞는 것을 모두 고르시오

    Abc, 자바, 1variable, $variable, variable_, #variable, true, False

     

    더보기

    Abc, 자바, $variable, variable_, False

     

    영어, 한글 모두 가능하지만 한글은 지양하는 편.

    특수문자는 $, _만 가능하며 숫자로 시작하면 안된다.(1variable)

    java에서 이미 사용하고 있는 Naming의 경우 사용할 수 없다(true)

     

     

    ※ 다음 중, 형변환을 생략할 수 있는 것을 2개 고르시오

    byte b  = 10;  float fl = 3;  int i = 100;  long l = 1000L;

    ① i = (int) b;  ② fl = (float) b;  ③ fl = (float) 3.14;  ④ short s = (short) fl;

     

    더보기

    ① i = (int) b;  ③ fl = (float) 3.14;

     

    byte -> short -> int -> long -> float -> double 순으로 자동 형변환이 된다.

     

     

    ※ 다음의 문장을 에러 없이 처리되도록 완성하시오.

      byte b1 = 12;

      byte b2 = 15;

      (         ) sum = b1 + b2;

     

    더보기

    int

     

    byte, short, char는 무조건 산술연산 시 int로 형변환이 되어 계산을 한다.

     

     

    ※ 다음 실행의 결과값은?

      byte b = 125;

      b += 10;

     

    더보기

    -121

     

    byte의 범위는 -128 ~ 127이다.

    125 + 10 = 135로 범위에서 벗어나기 때문에 overflow가 일어난다.

    127을 넘어서면 -128로 돌아가 답은 -121

     

     

    ※ 다음 문장을 import 선언하지 않고 사용할 수 있는 구문으로 변경하시오

    import java.util.Scanner;

    Scanner sc = new Scanner(System.in);

     

    더보기

    java.util.Scanner sc = new java.util.Scanner(System.in);

     

    패키지명까지가 원래 클래스명이기 때문에 경로까지 모두 적으면 따로 import할 필요 없이 사용 가능하다.

     

     

    ※ 2차원 배열에 들어 있는 데이터 중 가장 큰 값과 작은 값을 구해 출력하시오.

    int[][] array = {{12, 41, 36, 56}, {82, 10, 12, 61}, {14, 16, 18, 78}, {45, 26, 72, 23}}
    더보기

     

    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
        public void test() {
            int[][] array = {
                    {12,41,36,56},
                    {82,10,12,61},
                    {14,16,18,78},
                    {45,26,72,23}};
            int biggest = 0;
            int smallest = 0;
            
            for(int i = 0; i < array.length; i++) {
                int x = array[i].length - 1;
                
                for(int j = 1; j < array[i].length; j++) {
                    if(array[i][0> array[i][j])
                        changeSmall(array, i, j);
                    if(array[i][x] < array[i][j])
                        changeBig(array, i, j);
                }
                
                if(i == 0) {
                    biggest = array[i][x];
                    smallest = array[i][0];
                }
                else {
                    if(array[i][x] > biggest)
                        biggest = array[i][x];
                    if(array[i][0< smallest)
                        smallest = array[i][0];
                }
            }
            System.out.println("가장 큰 값 : " + biggest);
            System.out.println("가장 작은 값 : " + smallest);
        }
        
        public void changeSmall(int[][] array, int i, int j) {
        
            int temp = 0;
            temp = array[i][0];
            array[i][0= array[i][j];
            array[i][j] = temp;
        }
     
        public void changeBig(int[][] array, int i, int j) {
            
            int temp = 0;
            temp = array[i][array[i].length - 1];
            array[i][array[i].length - 1= array[i][j];
            array[i][j] = temp;        
        }
    cs

    어떻게 이렇게 복잡하고 더러울 수가...^^

    이 날 전에 정렬 알고리즘을 배워서 알고리즘을 써야한다는 생각에 사로잡혀 있었다.

    배열 맨 앞에 작은 값을 두고, 배열 맨 뒤에 큰 값을 두도록 해서 크기 비교를 하고 그 값을 다음 배열로 또 가져가고...

    그냥 2차원 배열이지만 1차원 배열처럼 생각해서 값 비교만 하면 되는 문제였는데 돌아돌아 복잡한 코드를 굳이굳이 짜서 풀었다.

     

    더보기
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
        public static void main(String[] args) {
            int[][] array = {
                    {12413656}, 
                    {82101261}, 
                    {14161878}, 
                    {45267223}};
            
            int max = Integer.MIN_VALUE;
            int min = Integer.MAX_VALUE;
            
            for(int i = 0; i < array.length; i++){
                for(int j = 0; j < array[i].length; j++){
                    
                    if(max < array[i][j])
                        max = array[i][j];
                    if(min > array[i][j])
                        min = array[i][j];                
                }
            }
            
            System.out.println("가장 큰 값 : " + max);
            System.out.println("가장 작은 값 : " + min);
     
        }
    cs

    변수 두 개를 앞서 만들어 가장 큰 값에 int형 중 제일 작은 값을, 가장 작은 값에 제일 큰 값을 넣어놓고 배열 안의 수를 비교한다.

    훨씬 깔끔하고 간단한 문제였다...

     

    '혼자 있는 방 > Java' 카테고리의 다른 글

    Homework(9)  (0) 2021.07.01
    Homework(8)  (0) 2021.06.30
    Homework(7)  (0) 2021.06.25
    Homework(6)  (0) 2021.06.24
    Homework(5)  (0) 2021.06.23

    댓글

Designed by Nana