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 |