후보 03 | 종합비타민
발디의 코테교실: 나만의 코딩 테스트 과외 선생님
ChatGPT와 구글 캘린더 & 스프레드시트를 연동한 맞춤형 코딩 테스트 학습 길잡이 챗봇

  • 활용 배경 / 목적
    Chat GPT 활용 배경/계기 또는 목적, 사용방식

[사용자 맞춤형 코딩 학습의 효율성 제고]

이 프로그램은 사용자 맞춤형 코딩 학습의 효율성 제고를 위해 설계되었다. 코딩 테스트 학습 과정에서 많은 이들이 자신의 수준에 맞는 적절한 문제를 찾는 데 어려움을 겪는다. 이에 따라 사용자별 실력과 목표에 맞춘 문제를 자동으로 변형 및 생성하여 최적화된 학습 환경을 제공하는 프로그램의 필요성을 느꼈고, 실제 과외 선생님에게 맞춤 수업을 듣는 것처럼 소통하며 학습을 설계하기 위해 대형 언어 모델인 ChatGPT를 활용하고자 고안하게 되었다. 나의 학습 정도에 따라 추천된 문제가 자동으로 캘린더에 일정으로 추가되는 시스템을 통해 학습자는 일관된 학습 습관을 형성할 수 있으며, 이는 학습 과정에서 발생할 수 있는 동기 저하나 지루함을 방지하고 꾸준한 실력 향상을 돕는다. 또한, 사용자는 자신이 원하는 시간과 속도로 학습을 진행할 수 있으며, 스프레드시트에 기록된 문제 풀이 데이터를 확인하고 조정할 수 있다. 이러한 시스템 자동화를 통해 학습자는 체계적으로 학습 목표에 도달할 수 있으며, 번거로운 수작업 없이 학습의 효율과 지속성을 극대화할 수 있다.

[독학 학습자의 한계 극복]

독학으로 코딩을 공부할 때 문제를 고르고 변형해 활용하는 데 어려움을 겪는다. 대부분의 강의나 서적은 예제 문제를 제공하지만, 학습자의 이해도와 실력 향상에 필요한 단계적 문제나 응용 문제는 부족한 경우가 많다. 실제로 코딩을 공부하는 팀원 전원이 독학의 한계를 느껴 이를 보완하여 스스로 학습을 이어갈 수 있도록 돕고자 개발하였다. 학습 기록을 기반으로, 학습자가 어떤 유형의 문제에서 어려움을 겪는지, 어떤 영역에서 개선이 필요한지 데이터로 분석해 제공함으로써 학습자 스스로 약점을 보완할 수 있는 기회를 제공하는 개인 코딩 튜터로 활용하고자 한다.

[시스템 자동화]

이 프로그램은 시스템 자동화를 핵심으로 설계된 맞춤형 코딩 테스트 학습 솔루션이다. ChatGPT와 구글 캘린더, 스프레드시트를 유기적으로 연동해, 문제 풀이 기록부터 오답 분석, 문제 풀이 일정 관리까지 모든 과정을 ChatGPT 화면 내에서 수행할 수 있도록 단순화한다. 사용자가 문제를 풀면 풀이 결과가 자동으로 스프레드시트에 기록되고, 이를 분석해 취약한 문제 유형과 반복되는 실수를 파악한다. 이러한 분석 결과를 기반으로 새로운 문제를 추천받을 수 있으며,. 알림 기능을 통해 문제 풀이 시기를 놓치지 않게 관리하고, 학습 흐름을 끊김 없이 유지할 수 있다. 번거롭고 반복적인 수작업을 모두 자동화함으로써, 사용자는 학습 그 자체에만 집중할 수 있고, 시스템은 효율적인 학습 사이클을 지속적으로 유지할 수 있다.

[사용방식]

1. ChatGPT 내에 존재하는 내 GPT > GPT 만들기 기능을 통해 코딩 테스트 학습을 관리해 주는 전용 챗봇을 만든다. 만들어진 챗봇에게 나의 코딩 학습 수준, 원하는 학습 플랜 방식을 입력하면 나에게 적절한 문제를 추천하여 구글 캘린더 일정에 추가한다.

2. 프롬프트로 '오늘의 문제를 풀어보자.' 라고 입력하면, ChatGPT는 당일에 배정된 문제를 백준 사이트에서 찾아와서 문제의 세부적인 내용 및 예시 입력/출력을 알려준다.

3. 2번에 이어서, 내가 문제를 풀 때에는 ChatGPT가 코딩테스트 멘토, 나는 멘티가 된다. 내가 내 풀이 코드를 제시하면 틀린 점을 지적해주되, 정답을 완전히 알려줘서는 안된다. 왜냐하면 ChatGPT는 정답을 알려주는 기계가 아니라, 내가 문제를 풀 수 있도록 도와주는 조력자 역할의 멘토이기 때문이다.

4. 구글 스프레드 시트를 연동하여, 내가 문제의 정답을 맞히면 {문제를 푼 날짜, 백준 문제 번호, 사용한 언어, 백준 문제 난이도, 알고리즘 종류, 시간 복잡도, 공부해야 할 점}을 스프레드시트에 row로 추가한다. '시간 복잡도'는 Big O 표기법으로 내가 정답을 맞힌 코드를 기준으로 측정하여 작성한다. '공부해야 할 점'에는, 내가 제출했던 오답을 기반으로 더 공부해야 할 부분을 요약해서 명사형으로 정리한다.

  • 사용 프롬프트
    프롬프트 구성, 활용방식, 입력값, 출력값

프롬프트 구성

[ 주제 ] 일정 관리 및 코딩 테스트 문제 추천

[ 목적 ] 사용자의 요청에 따라 Baekjoon 문제 추천, Google Calendar와 통합해 일정 관리, 사용자 요청에 맞는 정보를 출력

[ 구조 ]
- 사용자 의도 파악 : 사용자가 "일정 확인", "문제 추천", "문제 풀이", 또는 기타 요청 중 무엇을 원하는지 인식.
- 대상 정보 접근 : Google Calendar 일정 검색, Baekjoon 문제 추천 데이터베이스 탐색 등.
- 결과 제공 : 사용자의 요청을 충족하도록 정리된 정보를 출력.


활용 방식

사용자의 일정과 추천 학습 계획을 통합하여 효율적으로 관리.
Baekjoon 문제를 난이도와 주제에 맞게 추천.
Google Calendar와 통합하여 일정을 조정하거나 확인.

[ 사용 시나리오 ]
- 사용자가 "오늘 일정 확인" 요청 → Google Calendar에서 해당 날짜 일정 검색 → 결과 출력.
- 사용자가 "12월 15일 문제 추천" 요청 → Baekjoon 문제에서 관련 문제 검색 → 추천 문제 출력 및 사용자가 원하면 일정 추가.


입력값

1. 입력의 종류
날짜/시간: "오늘", "12월 15일", "이번 주"
2. 요청의 유형
"일정 확인", "문제 추천", "문제 풀이"
3. 세부 조건
문제 유형 (e.g., "DP", "그래프 이론"), 난이도 (e.g., 브론즈, 실버)
4. 예시 입력
"오늘 일정 알려줘."
“다음 주 토요일 일정이 어떻게 돼?”
"오늘의 문제를 풀어보자"
"힌트 알려줘"
"정답 알려줘"
"문제풀이를 구글 스프레드 시트에 정리해줘"
"오늘 푼 문제와 비슷한 난이도를 풀고싶어. 다음 주 평일 중으로 내 스케쥴 고려해서 일정에 추가해줘"
"문제풀이를 구글 스프레드 시트에 정리해줘"

출력값

1. 일정 결과
Google Calendar에서 가져온 특정 날짜의 일정 요약.

오늘(12월 11일)의 일정은 다음과 같습니다:
1. Baekjoon 9012번 문제 - 괄호 (실버 IV)
- 시간: 오후 5:30 - 오후 6:30
- 문제 링크: [9012번 문제]
(https://www.acmicpc.net/problem/9012)

2. 문제 추천
Baekjoon 문제 번호, 제목, 난이도, 링크.

12월 15일에 추천하는 코딩 테스트 문제는 다음과 같습니다:
1. Baekjoon(11403번) - 경로 찾기 (실버 I)
- 시간: 오후 2:00 - 오후 3:00
- 문제 링크: [11403번 문제]
(https://www.acmicpc.net/problem/11403)

3. Google Calendar 일정 추가
일정이 성공적으로 추가되었음을 알리는 메시지.

"12월 15일 오후 2시 Baekjoon 11403번 - 경로 찾기" 일정이 Google Calendar에 추가되었습니다.

  • 시행착오와 해결 방안
    원하는 결과를 도출하기까지 겪은 시행착오, 보완/개선 방법

1. 문제 추가 형식 및 일정 오류

최초 Instruction을 설정한 뒤 ChatGPT의 코딩테스트 문제 추천은 정확하게 이루어졌다. 하지만, 추천받은 문제들을 개인 Google Calendar에 추가할 때, 하루 밀려서 추가되는 오류와 일정 제목이 일정하게 입력되지 않는 문제를 발견하였다.

<보완/개선>
→ (1) 정확한 일정 추가 오류 해결 :
Google Calendar은 GMT로 KST(대한민국 표준시)를 사용하고, 이에 일정한 시간을 사용해주지 않으면 추천해준 일정에 맞는 문제를 정확하게 담지못하는 문제를 GPT와 대화를 통해 확인할 수 있었다. 따라서, Instruction에 정확한 표준 시간을 인지할 수 있도록 “추천 문제를 정확하게 나의 캘린더에 입력해줘 ( ex. 12월 9일 오후 2시 ~ 오후 3시 추천 문제 → 2024-12-09T14:00:00+09:00 ~ 2024-12-09T15:00:00+09:00 에 추가)” 라는 지시를 추가하여 해당 문제를 해결할 수 있었다.

→ (2) 제목 형식의 불규칙성 해결 :
해당 GPT가 일정을 등록해주는 과정에서 형식이 일정하도록 “Baekjoon(ProblemNumber번) - ProblemName(Difficulty Level)” 의 정확한 제목 형식을 추가하여 규칙적인 일정 제목으로 추가되도록 문제를 해결하였다.


2. 문제풀이 시작 시 일정을 불러들어오지 못하는 오류

해당 챗봇은 “오늘의 문제를 풀어보자” 라는 질문에 ai action with zapier을 통해 Google Calendar에 접속하여 당일 문제를 불러들여오고 자동으로 해당 문제에 대한 설명이 진행된다. 하지만, 문제풀이 시작과 동시에 일정을 불러들어오지 못하는 오류가 종종 발생하곤 하였다.

<보완/개선>
해당 서비스는 Zapier을 이용하여 actions.zapier.com/gpt/actions를 통해 나의 구글 캘린더와 GPT OPEN AI를 연동하며 진행된다. 하지만 해당 서비스에서 Google Calendar : Find Event 등 actions 설정 과정에서 특정 Calendar을 지정해주지 않으면 AI가 다른 Calendar을 검색하게 되므로, Calendar을 연동 계정에 맞게 설정해주어 해당 문제를 해결하였다.


3. 정답을 바로 제공하는 문제

문제풀이를 위해 “오늘의 문제를 풀어보자” 입력 시 문제의 정보와 입/출력 예시를 제공하여 준다. 이후, 최초 챗봇 설계/구상과 Instruction 작성 후 문제 풀이를 진행하면서 힌트만 제공받길 원하지만, 힌트 제공과 함께 개선코드로 정답을 알려주는 문제를 발견하였다.

<보완/개선>
코딩 튜터라는 점에서 정답을 바로 알려주기보다는 힌트를 통해 스스로 알아가며 공부하는 의의와 강점을 살리고자, Instruction 구성에 Rules Term을 추가하여 “코드 / 질문 에 대해서 힌트는 제공하지만 절대 정답 코드를 알려주어서는 안된다.” 라고 명확한 지시를 내려주었다. 이후, 정답을 알려달라는 질문이나, 코드를 제공하면 본 공모작에 튜터 의의와 맞게 정답을 제공하지 않도록 설계할 수 있었다.


4. Google Spreadsheets 자동화 코드 입력 시 발생 오류

우리는 해당 ChatBot이 추천/추가해준 문제를 힌트로만 명확하게 풀이할 수 있었다. 이후 본 공모작에서는 문제풀이 과정을 Google Spreadsheets 기록하는 업무 자동화까지 진행하였다. 하지만, Date, Algorithm, Time Complexity 등의 여러가지 입력 기록값에도 불구하고 계속해서 Date만 추가되는 문제를 발견할 수 있었다.

<보완/개선>
Instruction에 업무 자동화 과정에서 연동 Spreadsheets에 구체적인 Column과 값 산출 방법을 제시하여 주었다.
( ex. then add values of {'Date', 'Question Number', 'Language', 'Level', 'Algorithm', 'Time Complexity', 'Review Point'} as columns to the Google Spreadsheets. 'Time complexity' is measured by my answer code in Big O notation. In 'Review Point', based on ... )
이후 “오늘의 문제 구글 스프레드 시트에 기록해줘.” 라는 입력을 하면 자동으로 GPT는 연동된 Google Spreadsheets에 오늘 푼 문제에 대한 정보를 정확하게 입력해줄 수 있도록 해결하였다.

  • 생산성 향상 정도
    생산성 개선정도 Before/After

개발자/IT계열 데이터 관련 직무/개인 학습 등 여러이유로 백준 온라인 저지와 같은 온라인 코딩 플랫폼을 이용하여 코딩 테스트를 준비한다. 이러한 플랫폼들은 문제풀이에 대한 오답, 정답, 풀이 수 등 다양한 지표를 제공하지만, 학습의 효율성과 지속성을 떨어뜨리며, 준비에 많은 시간이 소요된다. 이러한 문제점들은 불편함으로 다가오며 이에 그치지 않고, 학습의 질과 시간 관리에 직접적인 영향을 미치게 된다.

Before
1. 지표 확인의 번거로움
- 백준 플랫폼에서는 문제 풀이 기록에 대한 다양한 통계를 제공한다. 하지만 이를 확인하기 위해서 매번 사이트에 로그인하고, 원하는 문제의 페이지를 일일이 찾아야 한다. 이러한 과정은 상당히 번거롭다. 또한, 이런 시각적 자료를 통해서, 과거 풀이 문제에 대한 정보를 직접적으로 파악하기 힘들며, 학습에 대한 장기 기억에 어려움을 겪곤 한다.

2. 개인화된 풀이 분석이 존재하지 않음
- 코딩 테스트 학습의 핵심은 나의 오답 코드를 분석하고 실수를 교정하는 데에 존재한다. 하지만 대부분의 플랫폼은 단순히 풀이의 정답 여부만을 채점하는 식으로 이루어지기에, 개인화된 학습 설계에는 큰 도움을 주지 못한다. 문제 풀이 후, 틀린 코드에서는 어떤 부분에서 오류가 났는지, 왜 오답이 나왔는지에 대한 구체적인 기록이 없어 나중에 같은 문제를 풀어도 동일한 실수를 반복하게 된다. 이러한 맥락에 따라 코딩 플랫폼 내에서 해결되지 못하는 개인화된 오답노트가 요구된다.

3. 체계적인 복습의 어려움
- 효율적이고 성공적인 학습을 위해선 자신의 취약점을 파악하고, 그에 맞춤 반복 학습을 체계적으로 진행해야 한다. 그러나 기존 플랫폼의 기록 등으로는 해당 과정을 진행하기에 어려움이 존재한다. 특히, 취약한 문제에 대해서 자동으로 관련 문제를 파악하기 어렵다. 결국 큐레이션의 부재로 개인의 기억에 의존하여 복습 문제를 탐색해야 하는 불편함이 있다. 또한, 문제 풀이의 대한 학습 상황이 한 눈에 들어오지 않는 문제도 존재한다.
After
1. 코딩 튜터 AI를 통해 체계적인 일정관리
- 자동으로 주제별 문제를 난이도 별로 오름차순으로 일정등록이 가능하여, 순차적 문제 진행이 수월해지고, 문제 탐색의 소요시간을 줄일 수 있었다.

2. 문제 풀이 기록 업무 자동화를 통한 강점
- 문제 풀이를 진행한 이후, 해당 챗봇에게 “오늘 푼 문제 기록해줘”라는 질문을 통해 시간복잡도, 날짜, 알고리즘 등 Column을 지정하여 자동으로 기록하는 업무 자동화 코드를 작성하였다. 이에, 추후에 풀이한 문제를 다시 확인하거나, sheet에서의 간편한 시각화 방법을 통하여 문제풀이 추이 등 여러가지 시도와 꼼꼼한 준비가 가능해졌으며, 해당 기록 작성 시간도 감축시킬 수 있었다.

3. ChatBot을 이용한 간편한 문제 추천
- 해당 업무를 이용할 때, 틀린 문제에 대한 취약점, 풀이 횟수 등을 업데이트 하는 문제는 Column을 추가하거나 Instruction을 조정하는 과정에서 충분히 업그레이드 가능하다. 특히, 취약문제에 대해 sheet의 정보를 다시금 불러와 GPT에게 요청하면 관련 문제를 추가로 추천해주는 등 여러가지 업무 효율성이 증가한다. 또한, 대형 언어 모델의 특성을 이용해 나의 학습 상황 및 수준을 자연어로 전달한 후, GPT에게 이에 따른 적절한 난이도의 문제로 조정하는 것이 가능해 마치 실제로 개인 과외 선생님과 소통하는 것과 같은 학습 설계 효과를 이끌어낼 수 있다.

4. 실시간 검색을 통한 다양한 풀이법 확보
- 해당 GPT는 검색 알고리즘 등을 통하여, 구글에 업로드된 Velog, T-story 등의 온라인 저지 문제풀이 코드를 검색하여 제공할 수 있다. 따라서, 질문 한 번으로 Python, JavaScript, C++ 등의 여러가지 언어에 맞춤형 정답을 여러가지 접근방법으로 익히고 학습할 수 있다.
  • 나만의 활용 노하우
    공모작과 관련한 재미있는 에피소드

저는 BITAmin이라는 연합 동아리에서 8명의 팀원과 함께 코딩 테스트 스터디를 이끌고 있습니다. 모두가 코딩에 대한 열정과 애정을 가지고 있었지만 각자의 실력과 목표가 조금씩 달랐기 때문에, 모든 팀원에게 일괄적인 커리큘럼을 제공하는 데 한계가 있었습니다. 스터디를 운영하면서 문제 난이도나 학습 진도가 불규칙해지기 일쑤였고, 커리큘럼이 체계적이지 않아 팀원들이 가끔은 혼란스러워하는 모습을 보였습니다. 이로 인해 학습 효율이 떨어지는 상황이 발생하곤 했습니다. 여러 시행착오를 거치며, 코딩 테스트 스터디 운영 과정에서 얻은 가장 큰 깨달음은 체계적인 학습 관리의 중요성이었습니다.

이러한 어려움을 해결하고자, 저는 시스템 자동화를 활용한 맞춤형 학습 관리 프로그램을 개발하게 되었습니다. ChatGPT와 구글 캘린더, 스프레드시트를 연동한 이 프로그램을 도입한 후, 스터디 운영의 효율 및 학습 편의성이 놀랍도록 바뀌었습니다. 프로그램이 자동으로 팀원들 각각의 실력을 분석하고, 각자의 수준에 맞는 문제로 변경하거나 난이도를 조절해주는 덕분에 커리큘럼이 훨씬 체계적으로 구성되기 시작했습니다. 매일 한 문제씩 자동으로 제공되니, 팀원들은 학습의 리듬을 놓치지 않고 꾸준히 공부할 수 있었습니다.

프로그램을 도입한 지 얼마 되지 않아, 팀원들로부터 많은 사용담을 들을 수 있었습니다. 한 팀원은 “요즘 커리큘럼이 체계적으로 좋아진 것 같아!”라며 만족감을 표현했고, 다른 팀원은 “난이도가 적당히 상승해서 내가 점점 발전해가는 기분이 들어!”라며 뿌듯해했습니다. 시스템이 제공하는 자동화된 문제 추천과 맞춤형 학습 플랜 덕분에, 각자에게 필요한 문제를 효율적으로 풀면서도 전체 스터디가 균형 있게 성장할 수 있었습니다.

이 프로그램 덕분에 저는 커리큘럼 구성에 들이던 수고를 덜 수 있었고, 스터디원들은 자신에게 꼭 맞는 문제를 풀면서 더 큰 성취감을 느끼게 되었습니다. 무엇보다도 팀원들이 함께 성장해 나가는 모습을 보며 스터디에 대한 애정이 더욱 커졌습니다. 시스템 자동화를 통한 맞춤형 학습이, 단순히 시간을 절약하는 것을 넘어 팀 전체의 학습 문화를 긍정적으로 변화시킨 경험이었습니다.

  • 구동 영상
    실제 구동화면

  • 보조 AI 프로그램 정보
    ChatGPT 외에 보조적으로 사용한 AI 프로그램

Zapier

Zapier는 다양한 웹 애플리케이션 간의 연결을 통해 작업을 자동화할 수 있는 클라우드 기반의 서비스 플랫폼이다.
이를 통해 사용자는 특정 조건이 충족될 때 정해진 작업을 수행하도록 설정할 수 있다.

<주요 기능>
1. 트리거(Trigger): 지정된 애플리케이션(구글 캘린더)에서 발생하는 특정 이벤트를 감지.
2. 액션(Action): 트리거에 의해 촉발된 작업을 ChatGPT에서 자동으로 실행.
3. 워크플로우 자동화: 사용자는 "Zap"이라고 불리는 워크플로우를 설정하여 반복적인 작업을 효율적으로 처리.

<사용 예시>
- 웹 애플리케이션 연결: Google Calendar 내 일정 정보를 ChatGPT에서 활용할 수 있도록 연결 다리 역할.
- 데이터 자동 입력: ChatGPT와 유저의 대화 내용을 기반으로 한 문제풀이 데이터 Google Sheets로 자동 저장.
(Date,Date, Question Number, Language, Level, Algorithm, Time Complexity, Review Point)

이 공모작에 사용된 프로그램 #ChatGPT
ChatGPT 실력을 나도 키워보고 싶다면?