-
[백준 알고리즘] 11718 그대로 출력하기 (JAVA)IT/개발 기록 2019. 1. 9. 10:55
문제
입력 받은 대로 출력하는 프로그램을 작성하시오.
1. 입력이 주어진다.
2. 입력은 최대 100줄로 이루어짐
3. 알파벳 소문자, 대문자, 공백, 숫자로만 이루어져 있음
4. 각 줄은 100글자를 넘지 않음
5. 빈 줄은 주어지지 않음
6. 각 줄은 공백으로 시작하지 않고, 공백으로 끝나지 않음
코드 1
123456789101112131415161718192021import 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
12345678910111213141516171819202122232425import 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번의 조건을 만족시키면 될 것같다
(문제 자체에서 이것까지 확인하지는 않는것 같음..)
1234567891011121314151617181920212223public 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 생각해 볼 부분
문제해결능력을 증진하려고 알고리즘 문제를
다시 공부하게 되었는데, 기초적인 문법에서 바로 생각이 나지 않았고
문제에서 준 힌트를 놓치는 부분이 있었다.
흔히, 시험볼 때 이건 쉽다라고 생각하고 대충 보고 넘어가는느낌처럼..
시간이 날 때마다 알고리즘 문제를 풀것인데
문제의 요점, 힌트를 정확히 파악해서 정리하고
기초적인 문법쪽에서 문제가 있다면 공부하면서 풀도록 해야겠다
'IT > 개발 기록' 카테고리의 다른 글
[백준 알고리즘] 15552 빠른 A+B (JAVA) (1) 2019.01.15 [백준 알고리즘] 2839 설탕 배달 (JAVA) (0) 2019.01.11 Web Server와 WAS(Web Server Application) 차이 (0) 2018.11.30 [Java] Java에서 람다식으로 코딩을 하면? (0) 2018.11.25 [Spring] Junit을 사용하여 단위테스트(Spring-Test사용) (2) 2018.11.05 댓글