[챗GPT로 코딩 공부] 코딩테스트 <이진탐색> 공부하기

내일배움캠프 수료생들은 챗GPT를 어떻게 개발 공부에 활용할까요?
Jun 28, 2024
[챗GPT로 코딩 공부] 코딩테스트 <이진탐색> 공부하기
✍🏼
챗GPT, 개발 공부에 있어서 든든한 친구 같은 존재이죠. 내일배움캠프의 수강생들도 혼자 공부할 때에는 챗GPT의 도움을 받고 있는데요. 오늘은 내일배움캠프 수료생들의 챗GPT 경험담을 보고, 여러분의 개발 공부에 적용해봅시다.
코딩 테스트를 준비하기 위해 연습문제를 풀며, 어떤 문제에 어떤 알고리즘을 적용해야 되는지 어려웠던 때가 있었습니다. 문제를 풀기 전 챗GPT에게 이 문제에 필요한 탐색 방법은 어떤게 알맞은지 물어보며, 이진 탐색 알고리즘에 대해 공부하며 연습문제를 풀어 나갔습니다.
 

정렬된 배열에서 이진 탐색을 구현하는 방법

질문: "정렬된 배열에서 이진 탐색을 구현하는 방법은 무엇인가요?"
첫 번째 질문에 대해 챗GPT는 이진 탐색을 구현하는 기본적 방법을 설명해 주었고, 다음과 같은 코드를 제공해 주었습니다.
public class BinarySearch { public int binarySearch(int[] arr, int target) { int left = 0; int right = arr.length - 1; while (left <= right) { int mid = left + (right - left) / 2; if (arr[mid] == target) { return mid; } if (arr[mid] < target) { left = mid + 1; } else { right = mid - 1; } } return -1; // target이 배열에 없는 경우 } public static void main(String[] args) { BinarySearch bs = new BinarySearch(); int[] arr = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; int result = bs.binarySearch(arr, 5); System.out.println("Index of target: " + result); } }
 

이진 탐색의 시간 복잡도와 그 이유

질문: "이진 탐색의 시간 복잡도와 그 이유는 무엇인가요?"
두 번째 질문에서는 이진 탐색의 시간 복잡도는 O(log n)이며, 이는 매번 탐색 범위를 절반으로 줄이기 때문에 발생한다고 설명해 주었습니다. 또 다른 탐색과의 비교를 통해 왜 이진 탐색이 효율적인지 이유를 이해할 수 있었습니다.
 

이진 탐색 예외 상황 해결 방법

질문: "이진 탐색 구현 시 발생할 수 있는 예외 상황을 어떻게 처리하나요?"
세 번째 질문에 대해서는 이진 탐색 구현 시 발생할 수 있는 예외 상황과 그 해결 방법을 설명해 주었습니다. 배열이 비어 있거나, 타겟 숫자가 배열의 범위 밖에 있는 경우를 고려해야 했습니다. 이를 해결하기 위해 배열이 비어 있는지 먼저 확인하고, 타겟 숫자가 배열의 첫 번째 요소보다 작거나 마지막 요소보다 큰지 확인하는 코드를 추가해서 예시 코드를 완성할 수 있었습니다.
public class BinarySearch { public int binarySearch(int[] arr, int target) { if (arr == null || arr.length == 0) { return -1; // 배열이 비어 있는 경우 } int left = 0; int right = arr.length - 1; while (left <= right) { int mid = left + (right - left) / 2; if (arr[mid] == target) { return mid; } if (arr[mid] < target) { left = mid + 1; } else { right = mid - 1; } } return -1; // target이 배열에 없는 경우 } public static void main(String[] args) { BinarySearch bs = new BinarySearch(); int[] arr = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; int result = bs.binarySearch(arr, 5); System.out.println("Index of target: " + result); } }
 
 
다시 물어본다면 제가 생각하는 문제 풀이 코드를 작성한 후, 이 코드보다 더 좋은 풀이방법이 있는지 물어볼 것 같습니다. 또 시도한 코드가 틀렸다면 코드를 첨부한 후 어떤 부분을 수정할지도 물어볼 것 같습니다.
 
 

내일배움캠프가 여러분의 러닝메이트가 되어드리겠습니다

내일배움캠프의 많은 수강생들이 부트캠프 생활을 수료하고 현업에서 개발자로 활약하고 있습니다. 내일배움캠프는 모든 운영진이 교육, 특강, 12시간 밀착 케어, 찐한 관리, 인재 채용까지 열과 성을 다해 수강생들의 꿈을 지원하고 있습니다. 수많은 장애물을 넘을 수 있도록 내일배움캠프가 든든한 러닝메이트가 되어드리겠습니다. 내일배움캠프과 함께 여러분의 개발자 여정을 시작하세요.
 
CREDIT
글 | 이지선 내일배움캠프 수료생 편집 | 정효재 팀스파르타 에디터
Share article
Subscribe to our newsletter
RSSPowered by inblog