문제
정수 N개로 이루어진 수열 A와 정수 X가 주어진다. 이 때, A에서 X보다 작은 수를 모두 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 N과 X가 주어진다. (1 ≤ N, X ≤ 10,000)
둘째 줄에 수열 A를 이루는 정수 N개가 주어진다. 주어지는 정수는 모두 1보다 크거나 같고, 10,000보다 작거나 같은 정수이다.
출력
X보다 작은 수를 입력받은 순서대로 공백으로 구분해 출력한다. X보다 작은 수는 적어도 하나 존재한다.
해당 문제도 역시나 생각을 어떻게 하느냐가 가장 중요하지 싶다..
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 | package step4; import java.util.Scanner; public class PrintIfSmaller { @SuppressWarnings("resource") public static void main(String[] args) { Scanner scan = new Scanner(System.in); //int numArr = 10; //int numVal = 5; int numArr = scan.nextInt(); int numVal = scan.nextInt(); int numArray[] = new int[numArr]; for(int i = 0; i < numArray.length; i++) { numArray[i] = scan.nextInt(); } //String[] numArray1 = {"1", "10", "4", "9", "2", "3", "8", "5", "7", "6"}; for(int J = 0; J < numArray.length; J++) { if(numArray[J] < numVal) { System.out.print(numArray[J] + " "); } } } }// |
18 라인에서는 배열의 방을 만들어준다.. 그 배열의 방만큼 for 돌면서 유입되어지는 수로 채워주게 된다.. 나는 테스트를 위해서 22 라인에 String 으로 배열을 임의로 만들었다..
무튼 유입이 된 수를 통해서 배열이 생성되고 나면, 그 배열만큼 for 를 돌려서 또 다른 비교 수와 비교를 하면 되는데 문제에서는 X 가 이에 해당한다.. 문제에서 X 보다 작은수라고 하였으니 조건 또한 24 라인처럼 if(numArray[J] < numVal)으로 되며, 그 조건에 해당할 때 해당하난 배열 값 numArray[J] 에 공백을 더해주면 되겠다..
그렇게 하면 문제에서 원하는 출력값이 나오게 되는데 조금 더 생각해보자면 마지막 수에는 뒷 공백이 없는게 맞다고 생각한다.. 물론 저렇게 해도 문제는 맞게 되긴 하지만 ㅎㅎㅎ..
아 참!!! 글구 답안지를 보면 상당히 많이 틀렸는데 문제 이해를 못해서 나오게 된 참담한 과정이라고 할 수 있다.. 다른 분들은 부디 문제를 잘 이해하셔서 나와 같은 오답 라인이 없길 바란다.. ㅎㅎㅎ
댓글 없음:
댓글 쓰기