[BOJ] 10817 | 세 수

     

     

    https://www.acmicpc.net/problem/10817

     

    10817번: 세 수

    첫째 줄에 세 정수 A, B, C가 공백으로 구분되어 주어진다. (1 ≤ A, B, C ≤ 100)

    www.acmicpc.net

     

    오답

    public class BOJ_10817 {
    
        public static void main(String[]args) throws IOException {
    
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            
            StringTokenizer st = new StringTokenizer(br.readLine()," ");
    
            int [] arr = new int[3];
    
            for(int i=0;i<arr.length;i++){
                arr[i] = Integer.parseInt(st.nextToken());
            }
    
            for(int i=0;i<arr.length-1;i++){
                for(int j=i+1;j<arr.length;j++){
                    int temp = arr[i];
                    arr[i] = arr[j];
                    arr[j] = temp;
                }
            }
            System.out.println(arr[1]);
        }
    }

     

     

    다음과 같이 두 번째 값만 출력 된다.

    3개의 값을 비교해서 두 번째로 작은 수의 값을 출력해야하기 때문에 위의 코드는 오답이다.

     

    그럼 어떤 부분이 문제일까? 

     

     

    바로 조건식의 누락 때문이다.

    조건에 부합하는 값이 없기 때문에 인덱스의 두 번째 값만이 출력 된 것이다 ! 

    따라서 arr 배열의 i번째 인덱스의 값이 j번째 인덱스의 크기 보다 클 경우, i의 값과 j의 값을 변경해준다.

     

     

    조건식을 추가하니까 정상적으로 출력된다!

     

    정답

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.util.StringTokenizer;
    
    public class Main {
          
        public static void main(String[]args) throws IOException {
    
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            
            // StringTokenizer를 이용해 입력된 값을 공백을 기준으로 똑똑 떼어낸다.
            StringTokenizer st = new StringTokenizer(br.readLine()," ");
    
     		// 크기가 3인 배열을 선언한다
            int [] arr = new int[3];
    
    		// 배열의 크기 만큼 (여기서는 3회를 의미한다) 배열의 i번째 인덱스에 토큰을 대입한다.
             // 이때 nextToken()은 String을 반환하기 때문에 Integer.parseInt를 해줘야한다.
            for(int i=0;i<arr.length;i++){
                arr[i] = Integer.parseInt(st.nextToken());
            }
    		
            for(int i=0;i<arr.length-1;i++){
                for(int j=i+1;j<arr.length;j++){
                  // i번째 인덱스와 j번째 인덱스의 크기를 비교한다.
                    if(arr[i]>arr[j]) {
                        int temp = arr[i];
                        arr[i] = arr[j];
                        arr[j] = temp;
                    }
                }
            }
            System.out.println(arr[1]);
        }
    }

     

    728x90

    '📓 Study > Coding Test' 카테고리의 다른 글

    [Programmers/JAVA] 직사각형 별찍기  (0) 2021.09.22
    [Programmers/JAVA] 짝수와 홀수  (0) 2021.09.21
    [BOJ] 2438번 별찍기  (0) 2021.09.12
    [BOJ] 5543번 | 상근날드  (0) 2021.09.02
    [BOJ] 15552번 | 빠른 A+B  (0) 2021.07.26

    댓글