페어코딩 스터디 준비 (1편)

on Melody “HENNESSY”·2022년 11월 15일
2

pairCoding Study

목록 보기
1/4
post-thumbnail

페어코딩 스터디 준비 (1편)

페어코딩 스터디를 하다보니 내가 네비게이터로서 설명을 해줘야 해서 문제를 좀 설명하면서 머릿속을 정리하려고 한다! 오늘은 수업에서 예제로 나왔던 문제를 다뤄볼 것이다.
문제 자체는 되게 간단한거 같은데 나는 역시 개린이(개발 어린이)라 ㅋㅋㅋ강사님처럼 쒹쒹하는게 여전히 넘나 신기함.......대단하세요.......존경해요...
암튼 이따가 할 페어코딩 스터디에 쩔쩔 매지 않도록 만발의 준비를 해보자!!!!

입력한 수를 거꾸로 출력하기

  • 12345를 입력하면 54321로 거꾸로 출력
  • 100의 경우 0이 사라지고 1만 출력
  • -12345를 입력했으면 -54321로 출력

이것이 만약...배열이었다면 muy facíl하게...포문 배열로 뽑았겠지만...
이것은 정수로 출력하는 것이다....
첨에 문제 보고 '헉 이거 어떻게 하라는겨!!!'
했는데 강사님 설명보고 아~ 했다.
풀이 과정을 설명해 보자면.

  1. 12345를 10으로 나눠 나머지를 저장,
  2. 몫에서 또 10을 나눠 나머지 저장(안나눠질때까지..)
  3. 그리고 각 몫에 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);
    }
}
  • 우선 practice1이란 클래스 안에 이름은 solution, 생성자엔 int만 들어갈 수 있는 메서드를 만들었다.
  • boolean isMinus를 초기화 하고 , 음수가 들어갔을 때는 우선 -1을 곱해 양수로서 함께 while문으로 돌아갈 수 있게끔 해줬다.
  • 그렇게 입력된 num이 while문으로 들어가서 num이 0보다 큰 상황에
  • Int r에 num을 10으로 나눴을 때의 나머지 값을 저장,
  • num은 몫으로 저장되고
  • 앞서 선언한 numReverse라는 변수에 10을 곱하고 나머지 r을 더한 값을 반복.
  • 0보다 크지 못해진(?) num은 while을 빠져나와 만약 isMinus(음수이면) ? numReverse값에 -1을 다시 곱해서 음수로 만들고
  • isMinus가 false였으면, 그냥 numReverse를 출력한다.

처음에 이 numReverse가 왜 나오는지?
이걸 이렇게 곱하는게 의미가 있다고? 했는데
손코딩 해보면서 직접 대입해보고 하니까 대박임...이게 맞는거였어...
그러면서 역시 고수들은 ㅋㅋㅋㅋㅋ생각하는게 다르다고 느꼈음 ㅠㅠㅠㅠ대박적...
어떻게 이런 생각을 하지요?
뭔가 원리라도 알겠으면 이해하겠는데 아직도 원리가 이해가 안되는중..그냥 넣어보니까 되길래 대박이라....'ㅅ';;;;;
해설 안봤으면 혼자 백프로 쩔쩔 맸음 ㅋㅋㅋ


마무리가 어색하지만 빠이!ㅋㅋㅋㅋ오늘 스터디 잘 할 수 있기를!!

profile
응애 초보 개발자

0개의 댓글