[Info]Tags categorized posts and contents patterns..

[AJAX] Ajax Code E xamples.. [Book] About the book.. [CSS] CSS Code E xamples.. [DB] Sql Code E xamples.. [DEV] All development stor...

레이블이 if문 사용해보기인 게시물을 표시합니다. 모든 게시물 표시
레이블이 if문 사용해보기인 게시물을 표시합니다. 모든 게시물 표시

2016년 9월 1일 목요일

[JAVA] Baekjoon 정수 N개 중에서 X보다 작은 수 모두 출력해보기..

벌써 9월이구나.. 시간 참 빠르다.. 오늘은 if else 의 마지막 문제다.. 풀어놓기는 좀 됬는데 업무로 인해서 조금 늦게 올리게 되었다..

문제
정수 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] 에 공백을 더해주면 되겠다.. 

그렇게 하면 문제에서 원하는 출력값이 나오게 되는데 조금 더 생각해보자면 마지막 수에는 뒷 공백이 없는게 맞다고 생각한다.. 물론 저렇게 해도 문제는 맞게 되긴 하지만 ㅎㅎㅎ..

아 참!!! 글구 답안지를 보면 상당히 많이 틀렸는데 문제 이해를 못해서 나오게 된 참담한 과정이라고 할 수 있다.. 다른 분들은 부디 문제를 잘 이해하셔서 나와 같은 오답 라인이 없길 바란다.. ㅎㅎㅎ

2016년 8월 25일 목요일

[JAVA] Baekjoon 세 정수 A, B, C중에 두 번째로 큰 정수 찾아보기..

이제는 if 조건이 3가지로 늘어났다.. 머 그렇다고 상황이 크게 바뀌는 것은 없다.. 만약 문제가 for 를 기초로 한다면 이런말을 못했을 나지만.. ㅋㅋㅋ.. if 라 조금 배짱을 부려본다.. ㅎㅎ

문제
세 정수 A, B, C가 주어진다. 이 때, 두 번째로 큰 정수를 출력하는 프로그램을 작성하시오. 

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

출력
두 번째로 큰 정수를 출력한다.

 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
package step4;

import java.util.Scanner;

public class PrintIfInteger {

    @SuppressWarnings("resource")
    public static void main(String[] args) {
  
        Scanner scan = new Scanner(System.in);
        
        //int intValA = 20;
        //int intValB = 10;
        //int intValC = 10;

        int intValA = scan.nextInt();
        int intValB = scan.nextInt();
        int intValC = scan.nextInt();
        
        //명확히 구분 될 때
        if(((intValA > intValB && intValA < intValC) || (intValA > intValC && intValA < intValB)) && (intValB != intValC)) {
            System.out.println(intValA);
         
        } else if(((intValB > intValA && intValB < intValC) || (intValB > intValC && intValB < intValA)) && (intValA != intValC)) {
            System.out.println(intValB);
         
        } else if(((intValC > intValA && intValC < intValB) || (intValC > intValB && intValC < intValA)) && (intValA != intValB) ) {
            System.out.println(intValC);
         
        //두 수가 같을 때
        } else if((intValA == intValB) || (intValA == intValC)) {
            System.out.println(intValA);
         
        } else if((intValB == intValC)) {
            System.out.println(intValB);
         
        //세 수가 같을 때
        } else if((intValA == intValB) && (intValA == intValC) && (intValB == intValC)) {
            System.out.println(intValA);
        }
    }

}//



문제에 대한 답은 상당히 다양할 것이다.. 우선 나는 각 3개의 입력값을 설정한 상태에서 if 를 충실히 사용했다.. 각각에 대한 경우에 대한 비교를 한 패턴이기 때문에 소스가 어찌보면 지저분하다.. ㅎㅎ

하지만 모든 분들이 알듯이 소스에 대한 코딩에 대한 답은 없으므로 자신의 입맛에 맞게 혹은 자신이 실험하고픈 방향대로 해보면 좋을 듯 하다.. 세상에 모든 소스는 내가 발전하기 위한 참고용이지.. 정답은 아니니 말이다..

2016년 8월 24일 수요일

[JAVA] Baekjoon 시험 점수를 입력받고 성적 출력해보기..

이제부터는 if else 에 대한 문제들이다.. 근데 생각보다 if 파트에는 많인 문제가 할당되진 않았었다.. 그래도 앞선 for 보다는 조금 더 적응이 된다고 해야되나.. 그런 문법이어서 자신감을 갖고 시작해보련다.. 막상 들어가면 어떻게 될지는 모르겠지만 말이지.. ㅋㅋ..

문제
시험 점수를 입력받아 90 ~ 100점은 A, 80 ~ 89점은 B, 70 ~ 79점은 C, 60 ~ 69점은 D, 나머지 점수는 F를 출력하는 프로그램을 작성하시오.

입력
첫째 줄에 시험 점수가 주어진다. 시험 점수는 0보다 크거나 같고, 100보다 작거나 같은 자연수이다.

출력
시험 성적을 출력한다.

 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
package step4;

import java.util.Scanner;

public class PrintIfScore {

    @SuppressWarnings("resource")
    public static void main(String[] args) {
  
        Scanner scan = new Scanner(System.in);
        
        //int scoreVal = 100;
        int scoreVal = scan.nextInt();
  
        //90 ~ 100점은 A, 80 ~ 89점은 B, 70 ~ 79점은 C, 60 ~ 69점은 D, 나머지 점수는 F
        String scoreRank = "F";
        if(90 <= scoreVal && scoreVal <= 100) {
            scoreRank = "A";
         
        } else if(80 <= scoreVal && scoreVal < 90) {
            scoreRank = "B";
         
        } else if(70 <= scoreVal && scoreVal < 80){
            scoreRank = "C";
         
        } else if(60 <= scoreVal && scoreVal < 70) {
            scoreRank = "D";
        }
        System.out.println(scoreRank);
    }

}//






음.. 문제 자체가 어렵다고 보진 않는다.. 다만 해당 문제는 로직을 이해하고 문제를 풀어가는 스킬보다 국어에 대한 부분이 더 중요하다고 본다.. 왜냐면 우리나라 말은 몇 점 미만, 이하, 이상 등등 어떻게 생각하느냐에 따라서 기준이 되는 점수가 포함 되기도 하고 안되기도 하기 때문이다..

그런 관점에서 해당 문제에서는 점수의 등급 구간에 대한 부분을 잘 생각하면서 풀면 손쉽게 풀수 있으리라 생각한다..