페어코딩 스터디를 하다보니 내가 네비게이터로서 설명을 해줘야 해서 문제를 좀 설명하면서 머릿속을 정리하려고 한다! 오늘은 수업에서 예제로 나왔던 문제를 다뤄볼 것이다.
문제 자체는 되게 간단한거 같은데 나는 역시 개린이(개발 어린이)라 ㅋㅋㅋ강사님처럼 쒹쒹하는게 여전히 넘나 신기함.......대단하세요.......존경해요...
암튼 이따가 할 페어코딩 스터디에 쩔쩔 매지 않도록 만발의 준비를 해보자!!!!
- 12345를 입력하면 54321로 거꾸로 출력
- 100의 경우 0이 사라지고 1만 출력
- -12345를 입력했으면 -54321로 출력
이것이 만약...배열이었다면 muy facíl하게...포문 배열로 뽑았겠지만...
이것은 정수로 출력하는 것이다....
첨에 문제 보고 '헉 이거 어떻게 하라는겨!!!'
했는데 강사님 설명보고 아~ 했다.
풀이 과정을 설명해 보자면.
- 12345를 10으로 나눠 나머지를 저장,
- 몫에서 또 10을 나눠 나머지 저장(안나눠질때까지..)
- 그리고 각 몫에 10을 곱하고 나머지를 더하는 과정
이렇게 보면 뭔말인지 싶다....한번 코드를 보자!
public class Practice1 {
public static void solution(int num) {
int numReverse = 0;
boolean isMinus = false;
if (num < 0){
isMinus = true;
num *= -1;
}
while (num>0){
int r = num % 10;
num /=10;
numReverse = numReverse * 10 + r;
}
System.out.println(isMinus ? numReverse * -1 : numReverse);
}
public static void main(String[] args) {
solution(12345);
solution(-12345);
solution(100);
solution(0);
}
}
처음에 이 numReverse가 왜 나오는지?
이걸 이렇게 곱하는게 의미가 있다고? 했는데
손코딩 해보면서 직접 대입해보고 하니까 대박임...이게 맞는거였어...
그러면서 역시 고수들은 ㅋㅋㅋㅋㅋ생각하는게 다르다고 느꼈음 ㅠㅠㅠㅠ대박적...
어떻게 이런 생각을 하지요?
뭔가 원리라도 알겠으면 이해하겠는데 아직도 원리가 이해가 안되는중..그냥 넣어보니까 되길래 대박이라....'ㅅ';;;;;
해설 안봤으면 혼자 백프로 쩔쩔 맸음 ㅋㅋㅋ
마무리가 어색하지만 빠이!ㅋㅋㅋㅋ오늘 스터디 잘 할 수 있기를!!