brunch

You can make anything
by writing

C.S.Lewis

by 번개거북 Aug 13. 2024

NYPC 문제 살짝 구경한 이야기  

NYPC 2024, 논리와 수학, 그리고 똑똑한 ChatGPT

집에서 친구와 공부(조금)를 한 이후 놀기로 한 아들에게 메시지가 왔다. 나중에 와이프의 얘기를 들어보니 둘이서 놀다가 친구가 참여하고 있던 프로그래밍 챌린지의 문제를 가지고 얘기를 좀 했다고 한다. 참고로 아들 친구는 작년부터 프로그래밍 학원을 다니는 녀석이고, 아들은 프로그래밍이 아닌 운동(턱걸이)에 주로 관심이 있다는 것은 함정.


빨간 모자이크 : 아들, 초록 모자이크 : 아들 친구


머리 아픈 것은 빨리 끝내고 놀고 싶었던 마음으로 신뢰하는 아빠에게 도움을 요청한 것으로 추정이 되었지만, 어쨌든 궁금증이 생겨서 알아보니 NYPC(NEXON YOUTH PROGRAMMING CHALLENGE, https://www.nypc.co.kr/)에서 진행하는 문제였다.


NYPC 챌린지 Round 상황에 따라 관여할 수 있는 수준이 다르다는 판단을 포함해서 적어도 제 기준으로는 cheating 영역의 조언은 없었다고 생각이 되었지만, 그래도 안전하게 NYPC 2024 Round 1이 끝난 다음날 글을 올립니다^^
그럼에도 불구하고 문제가 있다고 판단이 되는 부분이 있다면 연락을 부탁드립니다.



문제 사진들은 모자이크를 해둬서 내용을 이해하는데 불편할 수도 있어서 간략하게 요약을 해봅니다.
> 초밥은 2종류이고 각각 A개, B개를 만든다
> 초밥 상자는 초밥 4개를 담을 수 있다
> 하나의 상자에는 각 초밥 종류가 1개씩은 담겨야 한다
> 전체 초밥을 담을 수 있는 상자의 최소 개수를 구하는 것이 문제


당연히 cheating이 되어서는 안 되기 때문에 어떻게 도와줄까 고민하다가, 최근에 아들이 물어봤던 1차 함수 응용문제가 생각이 나서, 이 프로그래밍 문제를 수학 형태로 변형해서 설명하면 이해하는데 도움이 될까 하는 아이디어로 연습장에 그래프를 그려봤다.


일단 생각의 전환에 도움이 될 것이라 생각되는 수준의 그래프를 쓱쓱 손으로 정리하고 메시지를 보냈다. 참고로 아들이 찍어서 보낸 화면 기준으로는 열심히 루프를 돌면서 값을 빼는 형태로 구현을 했었는데, 숫자 간의 연관성은 찾았지만 아마도 수행 시간이 오래 걸리는 상황이었을 것으로 예상이 되었다.




한 가지 더 언급하자면 오지랖을 부려서 어린 친구를 당황하게 만든 상황은 아니다. 초등학교 시절부터 아들과 단짝인 친구이기도 하고, 별도로 전화나 메시지를 해도 어색하지 않을 정도의 사이여서 바로 메시지를 보냈다. 얼마 지나지 않아서 답장이 왔고 짧은 의견을 다시 줬다.



그리고 잠시 후에 성공했다는 메시지도 받았다. (잘 이해한 것 같아서 다행이군)




이후에는 약간의 오지랖이 있었는데, 제대로 정리를 해주면 좋지 않을까 해서 다음날 그래프를 GeoGebra로 예쁘게 그려서 다시 설명을 해보기로 했다.




그런데 딱 여기까지 그래프를 그리고 나서 생각해 보니, 내가 설명하려는 내용을 ChatGPT가 왠지 더 잘 그려줄 것 같은 생각이 들었다. 그리고 몇 가지 시도를 해보니 역시나 결과가 예쁘게 나왔다. 중간 과정은 생략하고 정리된 내용으로 소개를 해본다.


프롬프트 #1

1차 평면의 자연수 a, b를 좌표로 하는 (a, b)에 대해 y = ceil((a+b)/4)에 대한 그래프를 보여줘.

좌표는 a, b를 1에서 5까지로 해서 막대그래프 형식.

좌표 (a, b)가 y=3x 그래프와 y=1/3x 그래프의 안쪽인 경우는 파란색, 바깥쪽인 경우는 빨간색으로 표시해 줘. 예를 들면 (5,2)는 안쪽이고 (5,1)은 바깥쪽이야.



프롬프트 #2

해당 그래프를 1차 함수 그래프의 조합과 점의 좌표로 표현해 줘



그런데 결과 표시 값이 y = * 으로 표기된 것을 고치고 싶어서 다시 그려달라고 했다.


프롬프트 #3

y = ceil((a+b)/4)에 대해서는 Q로 표기해서 다시 그려줘



역시 ChatGPT의 문장 이해력은 굉장했다. 잠깐의 작업으로 원하던 결과가 나왔고, 나중에 이 내용과 GPT 코드 일부도 프로그래밍에 공부가 될 것 같아 메시지로 전달했다는 것으로 마무리~



프로그래밍을 아는 분들이라면 메시지 내용에서 유추할 수 있겠지만, 숫자의 규칙을 찾을 때 머릿속으로 구분해서 생각한 내용이 그대로 반영이 되어서 a <= b 조건을 기준으로 중복된 코드가 포함되어 있었다. 답을 맞힌 것으로 끝나버리면 더 나은 방법이 있을 수 있다는 것을 놓치지 않을까 하는 노파심에, 좀 더 성장하기를 바라는 마음으로 살짝 모범 답안에 가까운 힌트를 주었다.




TMI #1

글을 정리하면서 살짝 놀랐던 것이...


연습장에 4색 볼펜으로 끄적일 때 y=3x 그래프를 초록색으로 했고, 다음날 GeoGebra로 그릴 때도 무의식적으로 초록색을 사용했었다. 그리고 아무런 가이드를 하지 않은 상태에서 완성된 GPT 그래프의 결과에 사용된 색상 역시 초록색과 보라색으로, GeoGebra에서 내가 선택했던 색상과 동일했다. ㅎㅎ

우연이기는 하겠지만 어쩌면 공돌이들의 색상 감각인 것인가 하는 생각도 해봤다.


TMI #2

대학교 시절 동아리 후배들이 질문을 할 때 대답을 하는 방식이 상대에 따라 달랐던 기억이 떠올랐다. 이미 고민을 많이 한 것으로 보이면 친절하게 알려주고, 고민을 한 흔적이 느껴지지 않으면 '저기 책장에 있는 책 좀 찾아보고 나서 다시 물어봐'라고 했던...


TMI #3

자기 자식도 아닌 아들 친구에게 친절? 하게 대하는 모범적인 가장의 모습을 보여주는 코스프레라고 비판을 할 지인들에게 미리 이실직고를 하자면, 과거 주말마다 글에 나온 3인이 함께 소환사의 협곡(와일드리프트)을 거닐면서 마스터를 찍었던 한심한 아빠였.. (등짝 스매시!)

(p.s) 이제는 자중하고 있습니다. 애들도 이제는 학교/학원 수업에 바쁜 한국 교육 시스템 속으로...



E.O.D


                    

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari