ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [백준 알고리즘] 11718 그대로 출력하기 (JAVA)
    IT/개발 기록 2019. 1. 9. 10:55

     

    문제


    입력 받은 대로 출력하는 프로그램을 작성하시오.

     

    1. 입력이 주어진다. 

    2. 입력은 최대 100줄로 이루어짐

    3. 알파벳 소문자, 대문자, 공백, 숫자로만 이루어져 있음

    4. 각 줄은 100글자를 넘지 않음

    5. 빈 줄은 주어지지 않음

    6. 각 줄은 공백으로 시작하지 않고, 공백으로 끝나지 않음

     

     

     

    코드 1


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    import java.util.ArrayList;
    import java.util.Scanner;
    public class Main{
        public static void main(String args[]){
            Scanner sc = new Scanner(System.in);
            String a;
            ArrayList<String> array = new ArrayList<>();
     
            for(int i = 0; i<100; i++) {
                a = sc.nextLine();
                if(a.length()>100 || a.startsWith(" "|| a.endsWith(" "|| a.equals("")) {
                    i = i-1;
                }else {
                    array.add(a);
                }
            }
            for(int i=0 ; i<array.size(); i++) {
                System.out.println(array.get(i));
            }
        }
    }
    cs

     

    1. 입력이 주어진다. 

    2. 입력은 최대 100줄로 이루어짐

    3. 알파벳 소문자, 대문자, 공백, 숫자로만 이루어져 있음

    4. 각 줄은 100글자를 넘지 않음

    5. 빈 줄은 주어지지 않음

    6. 각 줄은 공백으로 시작하지 않고, 공백으로 끝나지 않음

     

    첫번째 풀이에서 2,3번이 문제가 되었다.

    최대100줄로 이루어진것을 무조건 100줄까지 입력되게 코딩을 하였고

    알파벳 소문자,대문자,공백,숫자로만 이루어져있다는걸 아예 간과했다.

    작은 조건들도 놓치면 안되는데..

    문제를 위 처럼 정리하지 않고 바로 풀어 생긴 문제 같다

    고객의 요구사항을 분석할때도 요청사항을 명확히 정리하고 개발을 들어가야하는데

    왜 이런 실수를 한건지.. 

     

     

     

    코드 2


    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
    import java.util.ArrayList;
    import java.util.Scanner;
    public class Main{
        public static void main(String args[]){
            Scanner sc = new Scanner(System.in);
            String a;
            ArrayList<String> array = new ArrayList<>();
     
            for(int i = 0; i<100; i++) {
                a = sc.nextLine();
     
                if((a.length()>=100)|| a.startsWith(" "|| a.endsWith(" ") ) {
                    i = i-1;
                    System.out.println("다시 입력해주세요.");
                }else if(a.equals("")){
                    i = 100;
                }else {
                    array.add(a);
                }
            }
            for(int i=0 ; i<array.size(); i++) {
                System.out.println(array.get(i));
            }
        }
    }
    cs

     

    1. 입력이 주어진다. 

    2. 입력은 최대 100줄로 이루어짐

    3. 알파벳 소문자, 대문자, 공백, 숫자로만 이루어져 있음

    4. 각 줄은 100글자를 넘지 않음

    5. 빈 줄은 주어지지 않음

    6. 각 줄은 공백으로 시작하지 않고, 공백으로 끝나지 않음

     

     

    2번의 문제를 더이상 입력하지 않고 

    출력하겠다라는 걸 공백값이 입력되면 끝내겠다고 가정했다.(문제에는 이런내용까진 없어보이는데..)

    그리고 아래 코드처럼 영문자,숫자만 입력할 수 있는 함수를 만들어 3번의 조건을 만족시키면 될 것같다

    (문제 자체에서 이것까지 확인하지는 않는것 같음..)

     

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    public boolean Inputcheck(String textInput) {
     
        char chrInput = "";
     
        for (int i = 0; i < textInput.length(); i++) {
     
            chr = textInput.charAt(i); 
     
            if (chrInput >= 0x61 && chrInput <= 0x7A) {
                //소문자
            } 
            else if (chrInput >=0x41 && chrInput <= 0x5A) {
                //대문자
            }
            else if (chrInput >= 0x30 && chrInput <= 0x39) {
                //숫자
            } 
            else {
                return false//영문자,숫자 아닌경우
            }
        }
        return true;
    }
    cs

     

     

     

    생각해 볼 부분

     

     

     

     


    문제해결능력을 증진하려고 알고리즘 문제를 

     

    다시 공부하게 되었는데, 기초적인 문법에서 바로 생각이 나지 않았고

     

    문제에서 준 힌트를 놓치는 부분이 있었다.

     

    흔히, 시험볼 때 이건 쉽다라고 생각하고 대충 보고 넘어가는느낌처럼..

     

    시간이 날 때마다 알고리즘 문제를 풀것인데

    문제의 요점, 힌트를 정확히 파악해서 정리하고

    기초적인 문법쪽에서 문제가 있다면 공부하면서 풀도록 해야겠다

     

     

     

     

     

    댓글