관리 메뉴

클라이언트/ 서버/ 엔지니어 "게임 개발자"를 향한 매일의 공부일지

프로그래밍을 위한 프롬프트 엔지니어링 4 - 코드 오류 수정하기 및 가설 검정 시행하기 본문

인공지능/프롬프트 엔지니어링 & 생성형 AI

프로그래밍을 위한 프롬프트 엔지니어링 4 - 코드 오류 수정하기 및 가설 검정 시행하기

huenuri 2024. 12. 21. 13:52

이번 실습의 문제는 코드 오류를 수정하는 문제들이다.


 

 

 

 

 

실습 3 - 코드 오류 수정하기

 


 

 

문제 확인

 

 

이 문제는 오류가 있어서 다음과 같은 오류 메시지가 뜬다. 이 코드를 이제 수정해 볼 것이다.


 

 

 

문제 풀기

 

  1. n = int(input()에서 괄호가 닫히지 않았던 오류를 수정했다.
  2. for i in range(n)에서 콜론(:)이 빠져 있었던 문제를 수정했다.
  3. sorted(array)는 정렬된 결과를 반환하지만 원래 리스트를 정렬하지 않으므로 array.sort()로 변경했다.

 

 

하지만 몇 분을 기다려도 코드는 실행되지 않았다. 이 코드가 오래 걸리는 이유는 아마도 입력 크기 n이 너무 크거나, 입력을 처리하는 동안 문제가 생겼기 때문일 가능성이 높다.

 

원인

  1. n의 크기 문제
    • 입력값 n이 너무 크면 리스트를 생성하고 정렬하는 데 시간이 많이 걸릴 수 있다.
    • 만약 의도치 않게 너무 큰 n을 입력했다면, 프로그램이 정렬 작업에서 멈출 수 있다.
  2. 입력 문제
    • 반복문에서 입력을 받을 때, 입력값이 제대로 제공되지 않으면 프로그램이 계속 기다리게 된다.
    • 특히 입력값을 충분히 주지 않거나 형식이 잘못된 경우 무한 대기 상태가 될 수 있다.
  3. 알고리즘 효율성 문제
    • 현재 정렬 알고리즘은 Python의 내장 sort를 사용하므로 효율적이지만, 입력 크기가 아주 크다면 여전히 시간이 오래 걸릴 수 있다.

 

 

 

해결 방안

  1. n 제한 추가
    • 너무 큰 값이 입력되지 않도록 제한을 추가하기
  2. 입력 확인
    • 입력값을 한번에 받고 처리하도록 변경하면 입력 문제를 줄일 수 있다.
  3. 입출력 최적화
    • 반복적으로 입력받지 않고, 한 번에 모든 입력을 처리하면 성능이 개선된다.

 

 

 

코드 수정하기

 

 

 

코드를 이처럼 수정하기 실행이 잘 되었고 정렬도 잘 되고 있다.

 

 


 

 

 

 

 

실습 5 - 가설 검정 시행하기

 


 

 

 

 

 

문제 풀기

이 문제는 단일 표본 t-검정(One-Sample t-test)을 사용해 주어진 데이터의 평균이 가설의 평균(80점)과 통계적으로 유의미하게 다른지 확인하는 문제이다.

 

 

위 코드는 단일 표본 t-검정을 수행하며, 귀무가설(평균 점수는 80점이다)을 검증한다. 실행 후 p-값을 확인하고 유의 수준 0.05보다 작으면 귀무가설을 기각하고, 그렇지 않으면 채택하면 된다.

 

 


 

 

 

 

학습을 마치고

조금 어려운 문제도 있었지만 ChatGPT에게 물어봐서 잘 풀었다. 이런 식으로 코드 수정뿐 아니라 가설도 검증할 수 있다는 것을 알게 되었다.

이제 남은 문제가 3문제 남았으니 끝까지 최선을 다해 풀어볼 것이다. 늦어도 2시 반 안에는 다 마칠 수 있을 것 같다. 오늘 학습량을 모두 채워서 공개 발행은 내일이나 되겠다.