2012-11-02 5 views
1

인터뷰에서 다음 질문을 받았습니다. 이 문제를 해결하는 방법에 대해서는 전혀 모른다. 어떤 제안?"유효한"숫자 생성

사용자 입력으로 시작 및 끝 정수가 주어지면 은 다음 특성을 갖는 모든 정수를 생성합니다.

예 :

123 , 1+2 = 3 , valid number 
121224 12+12 = 24 , valid number 
1235 1+2 = 3 , 2+3 = 5 , valid number 
125 1+2 <5 , invalid number 
+1

일반적으로 여러분의 문제를 해결하는 데는 주저합니다. 노력을 기울여 붙어있는 사람을 도우려는 사람이 훨씬 더 있습니다. 당신의 다음 인터뷰에서 당신을위한 교훈이 있습니다 : 당신이 이런 종류의 질문에 대한 답을 모른다면, 어떻게 대답을 시작하는지, 문제 해결 능력을 보여줄 기회를 기본적인 알고리즘과 이산 수학에 대한 지식. 그 모든 것을 수행하면 SO가 인터뷰 도중에 도움이 될 것입니다. –

+1

인터뷰는 끝났습니다. 나는이 질문들이 실용적인 응용을 가질 수있는 알고리즘 적 문제를 제기하는 한 합리적이라고 생각한다. –

+2

그런 질문은 종종 당신이 어떻게 문제에 접근 할 수 있는지보기 위해 고안되었습니다. 프로젝트 오일러 (http://projecteuler.net)에는 많은 문제가 있습니다. 접근법이 전혀없는 경우 무차별 대입 방식으로 시작한 다음 초기 알고리즘을 만든 후에는 상세 검색을 추가하십시오. –

답변

2

몇 가지 방법이이를 달성하기이다 :이 자격이 있는지

  1. 테스트 입력 범위에있는 모든 숫자 표시.

  2. 해당 숫자 만 생성하십시오. 두 개의 시작 값에 중첩 된 루프를 사용하고 루프 인덱스의 합계를 루프 인덱스에 추가하여 해당 숫자를 찾습니다. 추가 된 숫자가 상한을 지난 경우 내부 루프를 종료하십시오.

두 번째 방법은 계산 효율이 높지만 첫 번째 방법은 쓰기 및 유지 관리가 더 간단하고 O (n)입니다.

나는 면접관이 찾고있는 것이 무엇인지 모르지만, 의사 소통 능력이 대답보다 더 중요하다고 생각합니다.

+1

+1. 그 패턴은 나에게 분명하지 않다. 적절한 사양을 갖추기 전에 누가 코드 해킹 모드로 전환했는지 알고 싶습니다. – goat

1

이 문제를 해결하는 순진한 방법은 숫자를 숫자 시퀀스로 구문 분석 한 다음 규칙에 따라 시퀀스를 테스트하여 설정된 범위의 숫자를 반복하는 것입니다. 문제가 본질적으로 fibonnaci 번호를 찾도록 요청하여 두 변수 나 레지스터를 사용하여 순차적으로 추가 할 수있는 최적화가 있습니다.

귀하의 질문에 명확하지 않은 구성 요소 번호가 동일한 자릿수가 있어야합니다. 그렇지 않은 경우 구성 요소 번호 배열의 모든 조합을 생성해야합니다.

관련 문제