방금 기술 인터뷰에서 A가 B와 같고 B가 C와 같고 A가 C와 같은 "객체"를 통과하는 알고리즘을 작성하라는 요청을 받았습니다.
object문제는 부품으로 구성되어 있습니다 A,B and C, 그리고 그것은을 형성한다 triangle. 사람은 단순히 객체 (컬렉션)에 모두 동일한 부분이 있는지 묻습니다.
면접관은 A, B and C무한 루프에 빠지지 않고 부품 이 모두 같은지 알 수 있는 부품이 있는지 알고 싶어합니다 . 이 질문은 어리석게도 이해하기 쉽고 어리석은 질문을 계속했습니다.
그것들은 모두 같은 시간 A == B && B == C && A == C이지만, 그것은 간단하게 단순화 될 수 있습니다 A == B && A == C.
질문의 단순성으로 인해 혼란스러워졌으며 실제로 잘못 표현되었습니다.
올바른 표현이되어야합니다.
컬렉션의 각 부분이 서로 같은지 확인하는 알고리즘을 작성하십시오. 무한 루프에 빠지지 않도록주의해야합니다. 예를 들어; 부분 A가 B와 같고 B가 C와 같고 A가 C와 같으면 문제가 발생할 수 있습니다.
면접관에 따르면 정답은 재귀 함수를 작성해야한다는 것이 었습니다.
예, are all my parts equal재귀 함수를 사용 하여 질문에 대답 할 수 있습니다 . 아니요, 이것은 효율적인 솔루션이 아닙니다.
편집 : 몇 가지 생각 후. 아니요 재귀 함수를 사용하여 컬렉션에 모든 동일한 부분이 포함되어 있는지 확인할 수는 없습니다.
가장 효율적인 솔루션은 다음과 같습니다.
function are_all_equal(parts)
{
for(int i=1; i < parts.length; i++)
if parts[i] is not same as parts[0]:
return false;
return true;
}
print are_all_equal(parts) ? "yes" : "no";
이 문제는 프로그래밍에서 발생하며 컬렉션을 테스트하기 위해 알고리즘을 작성하도록 요청하는 것은 완벽하게 정상입니다. 프로그래밍 언어에 따라이 문제는 종종 한 줄의 코드로 해결할 수 있습니다.
그들이 한 것처럼 말하고 오답을 기대하는 것은 정상이 아닙니다. 이 질문은 1 년 전에 요청 된 이후입니다. 나는 당신이 다른 곳에서 일하게되기를 진심으로 바랍니다. 나는 원래 게시물에서 그 / 그녀의 결과가 어떻게 나오는지 듣고 싶습니다.