본문 바로가기

분류 전체보기

(28)
신입 개발자 기술면접 : 그래프 알고리즘 A* (A-Star) 알고리즘 휴리스틱 기반 탐색: A* 알고리즘의 핵심은 휴리스틱 함수를 사용하여 각 노드에서 목표까지의 예상 비용을 추정하는 것입니다. 이 휴리스틱은 현재 노드에서 목표 노드까지의 최소 예상 비용을 제공합니다. 최적 경로 탐색: A* 알고리즘은 시작 노드로부터 목표 노드까지의 최적 경로를 찾습니다. 이 알고리즘은 휴리스틱을 사용하여 탐색 과정에서 비효율적인 경로를 제거함으로써, 보다 효율적으로 목표에 도달할 수 있는 경로를 찾아냅니다. 동적인 비용 평가: A*는 각 노드에 대해 두 가지 비용을 계산합니다: 하나는 시작 노드로부터 해당 노드까지의 실제 비용(G-Cost), 다른 하나는 휴리스틱을 통해 추정된 해당 노드로부터 목표 노드까지의 비용(H-Cost). 이 두 비용의 합(F-Co..
신입 개발자 기술면접 C++ : strcpy, strcat, strlen, atoI strcpy 함수는 한 문자열을 다른 문자열로 복사합니다. 주의해야 할 점은 대상 문자열이 충분한 크기를 가져야 하며, 끝에 NULL 문자 (\0) 를 포함해야 한다는 것입니다. char* StrCpy(char* dest, const char* src){ char* ret = dest; while(*src){ *dest = *src; dest++; src++; } *dest = '\0'; return ret; } strcat 함수는 한 문자열의 끝에 다른 문자열을 붙입니다. 이 함수를 구현할 때에도 대상 문자열에 충분한 공간이 있어야 하며, 첫 번째 문자열의 끝에서 시작해야 합니다. char* StrCat(char* dest, const char* src){ chart* ret = dest; while(..
신입 개발자 기술면접 실전 기출 : 퀵 정렬 면접관 : 알고 있는 정렬 알고리즘을 하나 설명해 주세요. 나 : 퀵정렬에 대해서 설명하겠습니다. 나 : 우선 퀵정렬은 분할 정복 알고리즘으로 문제를 작은 2개의 문제로 분리하고 각각을 해결한 다음, 결과를 모아서 원래의 문제를 해결하는 전략입니다. 퀵정렬은 분할, 정복, 결합의 단계들로 이루어집니다. 나 : 과정을 설명하겠습니다. 먼저 배열안의 한 요소를 피벗으로 설정합니다. 피벗을 기준으로 피벗보다 작은요소는 피벗의 왼쪽으로 피벗보다 큰 요소는 피벗의 오른쪽으로 옮깁니다. 피벗을 제외한 왼쪽 배열과 오른쪽 배열을 다시 정렬 합니다. 분할된 부분 배열에서 다시 피벗을 정한 후 피벗을 기준으로 2개의 부분배열로 나누는 과정을 반복합니다. 이런 과정을 부분 배열들이 더 이상 분할할 수 없을 때 까지 반복하..
신입 개발자 기술면접 실전 기출 : 해시 면접관 : 해시 테이블에 대해서 설명해주시겠습니까? 나 : 해시 테이블은 연관배열 구조를 이용하여 Key에 Value를 저장하는 자료구조입니다. 면접관 : 연관배열이 뭔가요? 나 : 연관배열은 키 하나와 값 하나가 연관되어 있으며 키를 통해 연관되는 값을 알아낼 수 있는 자료구조를 의미합니다. 면접관 : 계속 설명해 보세요. 나 : 해시는 리소스를 포기하고 속도에 치중한 자료구조입니다. 특정 키 입력을 넣으면 해시 함수를 통해서 특정 연산을 통해 특정 값으로 변환시켜 줍니다. 면접관 : 특정 연산의 예를 간단히 들어주실래요? 나 : 예를 들어서 들어오는 Key값을 모두 100으로 나누는 연산을 한다면 110, 120, 130 이란 값이 들어올 때 10,20,30으로 변환시켜줍니다. 면접관 : 리소스를 포..