while문 예제 중에 해설과 다르게 푼 문제가 있어서 여기 적어놓으려 한다. 나중에 까먹을거같아서.

 

일단 문제는 '10000 미만의 정수 중에서 153의 배수 중 가장 큰 값을 찾아 출력하기'이다. 

10000을 대입한 변수 num과 153을 대입한 변수 key가 문제에 주어져있었다. 

 

내가 푼 방법은 변수 i를 선언해서 i*key가 num보다 작을 때까지 i를 1씩 더해주면서 i*key가 10000이 넘어가면 while문은 종료되고 --i*key를 출력하는 식이었는데, 풀이를 보니 나랑 반대로 되어있었다. 

public class Main {
    public static void main(String[] args) {
        int num = 10000;
        int key = 153;

        // 여기에 코드를 작성하세요.
        int i = 1;
        while(i * key < num){
            i++;
        }
        System.out.println(--i * key);
    }
}

 

 

풀이에 나온 방법은 나머지 연산을 써서 num%key가 0이 될 때까지 num을 1씩 빼주고, 0이 되면 while문을 빠져나와 num을 출력하는 방식이었다. 

public class Main {
    public static void main(String[] args) {
        int num = 10000;
        int key = 153;

        // 여기에 코드를 작성하세요.
        while(num % key > 0){
            num--;
        }
        System.out.println(num);
    }
}

 

해설 영상을 보다가 왜 조건식이 num%key!=0이 아닌지 잠깐 고민해봤는데, key의 배수인 가장 큰 num 값만 구하면 되니까 상관 없겠다 싶었다. 

 

 

왜 이런 간단한 문제를 적어놓냐면 이런 발상의 전환을 가져야 한다는 경각심을 갖기 위해..... 라고 할 수 있겠다.

문제 풀이에 있어서 여러가지 방향으로 접근할 수 있으면 좋은거 아닌가? 여러가지 방법 중에 최선의 것을 고를 수 있으니까.

아 암튼 내맘대로할거임

 

내가 너무 문제를 꼬아서 푸는건가 싶기도 하고...... 반성의시간

'210525~220812' 카테고리의 다른 글

#7 염기서열과 생물의 저주 210531  (0) 2021.06.01
#6 자바 배열 210530  (0) 2021.05.30
#4 자바 if else if else if 210528  (0) 2021.05.28
#3 자바 리터럴 210527  (0) 2021.05.28
#2 자바 변수(+자료형) 210526  (0) 2021.05.27

+ Recent posts