티스토리 뷰

제 주변에는 개발자 지망생들이 많습니다. 그 중 3명이 취업해서 잘 다니고 있기도 합니다. 제가 개발자가 되어서 취업 등 많은 문제들을 해결했기 때문에 개발자로의 길을 적극 권장 하고 있습니다. 요즘에는 전부터 알던 동생을 개발자로 취업 시키고자 가르치고 있습니다.

 

저부터 시작 해서 와이프, 동생 등을 다 취업을 시키고 나니 이런 부분의 생각을 트여주면 공부에 속도가 붙겠지 싶은 부분들이 있었습니다. 마침 오늘 대화하면서 그 과정이 나와서 본인 허락을 받고 대화 내용을 올려봅니다.

 

저는 11년차이고 이 친구는 이제 배운지 2달 되었습니다.

 

이 대화에서 풀고자 하는 문제는 random()으로 1~6까지 숫자를 두개 생성해서 합이 5가 되면 리턴하는 코드를 짜는데 뭔가 잘 안되나봅니다. 자꾸 이런식으로 물어보길래 질문 방법이나 문제 해결 방법을 가이드 해줘야겠다고 생각해서 가이드를 해주었더니 문제가 풀렸다고 하네요.

 

신랄함 주의

본인에게 동의를 구하였습니다. 제발 재미로만 봐주시고 불편함이 있을것 같다면 스크롤을 내리지 말아주세요.

 

[S군] [오후 2:56] 형
[S군] [오후 2:57] public class Exercise02_15 {
    public static void main(String[] args) {
        while(true) {
            int num1 = (int) (Math.random() * 6) + 1;
            int num2 = (int) (Math.random() * 6) + 1;
            if((num1 + num2) == 5) {
                break;
            }
            System.out.println("(" + num1 + "," + num2 + ")");
        }
    }
}
[S군] [오후 2:57] 이거 왜 틀린건지 모르겠어요;;  ---> 내가 컴파일러냐? ㅋㅋ
[S군] [오후 2:57] while문과 Math.random() 메소드를 이용해서 2개의 주사위 던졌을떄 나오는 눈을 (눈1,눈2)형태로 출력하고
눈의 합이 5가 아니면 계속 자사위를 던지고 눈의 합이 5이면 실행을 멈추는 코드 작성하시오.
[김경록] [오후 3:09] 훔
[김경록] [오후 3:09] 무슨에러 나는지도 보내
[S군] [오후 3:10] 에러는 안납니다요
[김경록] [오후 3:10] 근데 왜 안된다고 판단했어?
[S군] [오후 3:10] 숫자합이 5여야 하는데
[S군] [오후 3:10] 지멋대로 출력되네요
[김경록] [오후 3:11] 지멋대로가 어떻게
[김경록] [오후 3:11] 지멋대로인지?
[S군] [오후 3:11] (숫자1,숫자2) 이렇게 나오는데 합이 5여야 하는데
12이기도 하고 8이기로 하고 출력할때마다 결과가 달라요
[S군] [오후 3:11] if문이 반영이 안된것 같습니다..
[김경록] [오후 3:12] 안멈춰? ---> 학생 본인의 판단미스
[S군] [오후 3:12] 중괄호를 닫았으니 그럴것 같다는 생각도 드는데 그러면 출력이랑 if문 순서를 바뀌도 되나요?
[S군] [오후 3:12] 네 안멈춥니다
[김경록] [오후 3:12] num1 + num2가 5가 안나오나보네
[S군] [오후 3:13] 네..
[김경록] [오후 3:13] 질문 수준이 조금 올라오긴 했는데
[김경록] [오후 3:13] 아직 1차원적이노 ---> 이런건 혼자 해결해야지
[김경록] [오후 3:13] while문이 안멈추면 왜 안멈추는지 생각을 해볼수도 있는데
[김경록] [오후 3:13] 이 생각이 잘 안들어?
[김경록] [오후 3:14] 뭐라고 하는게 아니고 너의 상황을 알아야
[S군] [오후 3:14] while문은 멈췄어요 ----> 본인의 판단 미스인 것을 인정함
[김경록] [오후 3:14] 답변을 해주거나 방향을 제시를 해주니까
[김경록] [오후 3:14] 안멈춘대매 ---> 판단 제대로 못해서 뭐라 함
[김경록] [오후 3:14] while문을 멈추게 하라는 뜻이 아니고
[김경록] [오후 3:14] 저 생각을 해봤냐고 물어보는거라
[김경록] [오후 3:16] 저 생각을 해본건지 아니면 어디서 멈춘건지
[김경록] [오후 3:16] 궁금 ---> 궁금하다는 것은 제가 보기엔 생각의 방향이 틀렸다는 것을 돌려 얘기하는 것
[김경록] [오후 3:16] 이게 이 일 하는데 좀 중요한 부분이라서 ---> 논리적인 생각이 중요한데 접근이 좋지 않다는 것
[S군] [오후 3:17] 형 질문을 이해를 못해서... ---> 이제서야 본인의 잘못을 인정
while문은 break;로 빠져나가게 했으니깐 그냥 당연히 멈춘다고 생각했는데;;
[김경록] [오후 3:17] 그래 저 break;가 작동을 했으면 당연히 멈추는건데
[김경록] [오후 3:17] 당연한 일이 안일어났으면 ---> 왜 본인을 의심하지 않는지?
[S군] [오후 3:17] 쌍으로 합이 5가 될때까지 랜덤으로 나오다가 합이 5되면 빠져나간다고 생각했는데
[김경록] [오후 3:18] 그니까 지금 니가 하는 생각하고 니가 수행한 작업이 일치 하는건지
[김경록] [오후 3:18] 를 의심을 니가 안하는것 같아서 ---> 머리를 좀 쓰고 물어봐라 생각을 좀 하고
[김경록] [오후 3:19] 형이 물어보는 이유는 생각을 해보라는거야 답을 형이 주면 니가 프로젝트 해야 할 때도 계속 답을 줄 수는 없으니까 생각을 해보라고 자꾸 물어보는거야
[김경록] [오후 3:19] 이런 대화가 자연스럽게 안되면 니가 공부가 깊이가 안생겨
[S군] [오후 3:20] 네;; 오류가 안뜨니깐 뭐가 틀린지를 모르겠어요
[김경록] [오후 3:20] 그러면 지금 뭔가 안되면
[S군] [오후 3:20] if문도 while문 안에 들어있어서 따로 노는것도 아닌것 같고
[김경록] [오후 3:20] 뭐가 잘못됐을까 가설을 세워야지
[김경록] [오후 3:20] 형한테 물어보는게 아니고 여기에서 가설을 세워 ---> 왜 내 cpu자꾸 쓰냐고!
[김경록] [오후 3:21] if문이 잘못된건지 뭔가 잘못 코딩을 했으니까 잘못 작동할거잖아
[S군] [오후 3:22] 네.. 뭐가 잘못된건지 생각해보겠습니다  ---> 다음이란 없다 지금 머리를 써라
[김경록] [오후 3:23] 지금 생각해
[김경록] [오후 3:24] 뭐가 잘못된것 같은지 가설부터 세워봐
[김경록] [오후 3:24] 이게 안되면 책 뗘도 소용이 없을것 같노
[김경록] [오후 3:24] 가설은 뭔지 알지?
[S군] [오후 3:25] 형 예를 들어서 가설은 어떻게 세워요?
[S군] [오후 3:25] 제가 위에 볼때는
[S군] [오후 3:25] 출력이 따로 노는것 같긴해요..  ---> 표현이 문학적이다 = 문제 해결에 도움이 안되는 표현
위에 조건문들은 다 맞는데 출력을 어떻게 할지를 정해지기전에 조건문을 빠져나온 느낌
[김경록] [오후 3:25] 어
[김경록] [오후 3:25] 출력이 몬데?
[S군] [오후 3:25] println이요
[김경록] [오후 3:25] 그게 왜 따로논다고 생각한거지?
[S군] [오후 3:26] break; 가 있으니깐 이미 while문을 강제 종료 시킨 이후에 출력을 시키니깐
[S군] [오후 3:26] 안나오는것 같다는 생각이 들어서요
[김경록] [오후 3:27] println이 위 코드상으로는 while안에 있는데?
[김경록] [오후 3:27] public class Exercise02_15 {
    public static void main(String[] args) {
        while(true) {
            int num1 = (int) (Math.random() * 6) + 1;
            int num2 = (int) (Math.random() * 6) + 1;
            if((num1 + num2) == 5) {
                break;
            }
            System.out.println("(" + num1 + "," + num2 + ")");
        }
    }
}
[S군] [오후 3:28] 네,, 출력해서 보면 무한히 안돌고 몇개나오다 마는거 보면 그건 아닌것 같네요;;;
[김경록] [오후 3:28] 아까는 무한히 돈다고 하지 않았어?  ---> 앞에서 한말 기억 못하면 안되지
[김경록] [오후 3:28] 무한히 안돌아?
[S군] [오후 3:28] 네 그건 다른 얘기 였어요
몇개 나오다 마는데 총합이 5가 아닌 쌍이 나와요
[김경록] [오후 3:29] 근데 이 로직이
[김경록] [오후 3:29] 총합이 5가 나오게끔 만든거야?
[김경록] [오후 3:29] 목표가 총합이 5가 나올때까지 주사위 던지는거야?  ---> 목표를 모르고 코드를 짜면 맞게 짜고도 틀리다고 생각할 수 있음
[S군] [오후 3:29] 네 if문에 5일때 빠져나오라고 했어요
[S군] [오후 3:29] 네 맞아요
[김경록] [오후 3:29] 그러면 로직상으로는
[김경록] [오후 3:29] 총합이 5가 나오면 안되겠네
[김경록] [오후 3:29] 5가 나오면 끝나게 했으니까
[S군] [오후 3:30] 아하
[S군] [오후 3:30] ...
[김경록] [오후 3:31] 그럼 어케 고쳐야할까?  ---> 드디어 의미있는 대화의 시작
[S군] [오후 3:31] 그러네요 5가 아예 나오면 출력이 안되겠네요
[김경록] [오후 3:31] 엉 그럼 어케 고쳐야 할까?  ---> 정말 이해를 했는지 의심
[S군] [오후 3:31] 흠..
[김경록] [오후 3:31] 니가 5가 아얘 나오면 안된다메
[김경록] [오후 3:32] 그러면 어떻게 고쳐야 할지도 떠올랐을텐데  
[김경록] [오후 3:32] 이걸 못떠올렸다면 니가 아직 이해를 못했는ㄷ
[S군] [오후 3:32] 아뇨 합이 5가 나오면 빠져나오는걸로
[김경록] [오후 3:32] 이해한척 한거임 ㅇk
[김경록] [오후 3:33] 그니까 이 로직으로 니가 하고싶은게 모야?  ---> 설계를 하고 개발을 해야하는데 대체로 안하다가 방향을 잃는 경우가 많음
[김경록] [오후 3:33] 5가 나올때까지 던지는거야? 5가 나오게 하는거야?  ---> 목표가 정확하지 않음
[S군] [오후 3:33] 합이 5가 될때 빠져나온다는 생각을 한건데
[김경록] [오후 3:33] 그러면 맞게 짰는데?
[S군] [오후 3:33] 합이 5가 되면 그거까지는 출력해주고 빠져나오기
[김경록] [오후 3:33] 5가 될때 빠져나오는게 목표야?
[S군] [오후 3:33] 네
[김경록] [오후 3:34] 그러면 맞게 짰는데
[S군] [오후 3:34] 랜덤으로 던지다가 두수의 합이 5가 될때 빠져나오기
[김경록] [오후 3:34] 모가 안된다는건지?
[김경록] [오후 3:34] 웅 그건 맞지
[김경록] [오후 3:34] 니가 맞게 짰지 5가 될때 빠져나오는건 맞지
[김경록] [오후 3:34] 근데 왜 안된다고 질문한거였을까?
[김경록] [오후 3:34] 모라고 하는게 아니고 니가 질문할때 했던 생각을
[김경록] [오후 3:34] 추적해보기 위해 물어보는거
[김경록] [오후 3:34] 니가 아직 하는 방법을 모르는것 같음 ㅇㅇ
[S군] [오후 3:35] 출력이 쭉 되는데.. 마지막 쌍이 (2,3) 이런식으로 합이 5가 되는거 나오고 끝나는걸 기대했거든요
[김경록] [오후 3:35] 그렴 5가 됐을 때 빠져나오는걸 원하게 아니네  ---> 역시나 목표 설정 안됐을 뿐만 아니라 그냥 코딩부터 함
[김경록] [오후 3:35] 5가 될때까지 출력한 후에 빠져나오는게 니 목표였네  ---> 30분을 대화하고 나서야 목표가 뭔지 알게됨
[S군] [오후 3:35] 근데 막상 실행해 보면 
마지막 출력값이 (3,6) 이런식이 나와서
[S군] [오후 3:36] 출력은 해주고 빠져나오는거요..
[김경록] [오후 3:36] 그래 그럼 지금 5가 돼서 빠져나오긴 했는데
[김경록] [오후 3:36] 출력이 안되는게 문제잖아?
[S군] [오후 3:36] 네
[김경록] [오후 3:36] 몬말인지 이해 했어?
[S군] [오후 3:37] 그러니깐 제가 출력해서 본 값은 이미 두수의 합이 5가 되서 빠져나왔기 때문에 제가 확인이 불가능하다는말 아니에요?  ---> 실행 해보면 되는걸 물어봄
[S군] [오후 3:38] 저는 출력값에서 (2,3) 이 나오고 빠져나오는걸 기대한거고
[S군] [오후 3:38] or (1,4)
[김경록] [오후 3:38] 왜 물어보는거지?  ---> 그래서 짜증냄
[김경록] [오후 3:38] 실행 해보면 결과를 확인 할 수 있는데
[김경록] [오후 3:38] 물어보는 이유가 뭐냐
[김경록] [오후 3:39] 물어보는 이유를 알려줘라
[김경록] [오후 3:39] 뭐라고 하는게 아니고 이유를 듣고 싶다는거
[S군] [오후 3:39] 그건 형이랑 얘기하다보니 알겠는데,, 문제는 두수 합이 5가 되는걸 확인하려면 어떻게 해야할까요?
[김경록] [오후 3:39] 이런 질문을 떠올리라는거지 ㅋㅋ  ---> 드디어 의미있는 질문을 함
[S군] [오후 3:39] 두수합이 5가 되고 빠져나오는거
[김경록] [오후 3:39] 이런 질문을 스스로 떠올릴 수 있게
[김경록] [오후 3:39] 훈련하는게 프로그래밍 공부임
[김경록] [오후 3:40] 지금 상황을 파악 한거잖아
[김경록] [오후 3:40] 지금은 출력이 안되고 빠져나오는데 어떻게 고쳐야 할까?
[김경록] [오후 3:40] 이런 문제가 생겼지?
[S군] [오후 3:40] 네
[김경록] [오후 3:40] 그럼 어떻게 해결해야할까?
[김경록] [오후 3:40] 이런 생각이 들지?
[S군] [오후 3:40] 네 맞아요
[S군] [오후 3:40] 상황은 이해했는데
[김경록] [오후 3:40] 해결은 어떻게 해야할까?
[김경록] [오후 3:40] 이걸 니가 떠올려야지
[S군] [오후 3:40] 저 조건들중에 뺄건 없는데
[김경록] [오후 3:41] 문제가 뭘까?
[김경록] [오후 3:41] 이런 생각을 스스로 해
[S군] [오후 3:44] 형 이해했어요.. 출력을 먼저 시키고 if문을 달아야곘네요
[김경록] [오후 3:44] 고쳐
[S군] [오후 3:45] 그래야 제가 마지막 값을 확인하고 빠져나와지겠네요
[김경록] [오후 3:45] 일케 하는거다
[S군] [오후 3:45] 네 했습니다
[김경록] [오후 3:45] ㅇㅇ
[S군] [오후 3:45] 아,, 마지막문장이 무조건 println이여야 한다는 생각을 하고 있었습니다
[S군] [오후 3:45] 조건문이 그 뒤로 와도 되는군요
[김경록] [오후 3:46] 고치고 코드로 말해
[S군] [오후 3:46] public class Exercise02_15 {  ---> 결국 스스로 해결함
    public static void main(String[] args) {
        while(true) {
            int num1 = (int) (Math.random() * 6) + 1;
            int num2 = (int) (Math.random() * 6) + 1;
            System.out.println("(" + num1 + "," + num2 + ")");
            
            if((num1 + num2) == 5) {
                break;
            }

        }
    }
}
[김경록] [오후 3:46] 그래
[김경록] [오후 3:46] 글케 하는거지
[S군] [오후 3:46] 아하... 형 감사해ㅇㄱ요

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/03   »
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
글 보관함