방금 기술 인터뷰에서 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 년 전에 요청 된 이후입니다. 나는 당신이 다른 곳에서 일하게되기를 진심으로 바랍니다. 나는 원래 게시물에서 그 / 그녀의 결과가 어떻게 나오는지 듣고 싶습니다.