>  기사  >  백엔드 개발  >  배열 요소를 연결하여 형성된 숫자가 해시된 숫자인지 확인합니다.

배열 요소를 연결하여 형성된 숫자가 해시된 숫자인지 확인합니다.

WBOY
WBOY앞으로
2023-08-25 20:17:06793검색

배열 요소를 연결하여 형성된 숫자가 해시된 숫자인지 확인합니다.

이 질문에는 정수 배열이 제공됩니다. 모든 요소를 ​​정수로 결합하고 그것이 하샤드 수인지 확인해야 합니다.

해결책으로 넘어가기 전에 하샤드 수(Harshad number)에 대해 알아보겠습니다. 모든 숫자는 숫자의 합으로 나누어지는 하샤드 수입니다. 예를 들어, 12는 1+2의 합인 3으로 나누어지기 때문에 12는 하샤드 수입니다.

이 문제를 해결하려면 모든 배열 요소를 추가한 다음 결과가 하샤드 수인지 확인할 수 있습니다.

문제 설명 - 정수 배열이 제공됩니다. 모든 요소를 ​​숫자로 결합하고 결합된 숫자가 하샤드 숫자인지 확인해야 합니다.

입력 – arr = {1, 35, 69, 60};

출력-예

Explanation - 결과 숫자 1356960은 합으로 나눌 수 있습니다.

입력 arr = {1, 65, 78, 1}

Output – 아니요

설명 - 결합된 숫자 165781은 28로 나누어지지 않습니다.

입력 – arr = {1, 44}

출력-예

설명——144는 9로 나누어집니다.

방법 1

이 방법은 모든 배열 요소를 하나의 문자열로 결합합니다. 그런 다음 stoi() 메서드를 사용하여 결합된 문자열을 정수로 변환합니다. 그런 다음 모듈로 연산자를 사용하여 숫자가 숫자의 합으로 나누어지는지 확인할 수 있습니다.

알고리즘

  • "결합된" 문자열 변수를 정의하고 빈 문자열로 초기화합니다.

  • 정수 배열을 반복합니다. to_string() 메서드를 사용하여 숫자를 문자열로 변환합니다. 그런 다음 "결합된" 변수에 추가합니다.

  • 변수 'sum'을 정의하고 0으로 초기화하여 숫자의 합을 저장합니다.

  • 결합된 문자열을 반복하고 각 숫자의 합을 저장합니다.

  • stoi() 메서드를 사용하여 결합된 문자열을 정수로 변환합니다. 그 후에 정수는 모듈로로 취해지며 결과에 따라 부울 값이 반환됩니다.

으아악

출력

으아악

시간 복잡도 - 문자열을 반복하므로 O(N)입니다.

공간 복잡도 - 추가 공간을 사용하지 않으므로 O(1)입니다.

방법 2

이 방법에서는 결합된 정수의 각 작은 블록에 대해 모듈로 연산을 수행하고 큰 정수가 그 합으로 나누어지는지 확인합니다.

알고리즘

  • "결합된" 문자열 변수를 정의합니다.

  • 정수 배열을 반복하고 모든 정수 조합을 'combined' 변수에 저장합니다.

  • 숫자의 합을 "sum" 변수에 저장하세요

  • 루프를 사용하여 "결합된" 문자열을 반복합니다.

  • '현재' 변수를 정의하고 0으로 초기화합니다

  • '현재' 변수에 10을 곱하고 현재 숫자 값을 더합니다. 그런 다음 결과 값을 'current' 변수에 저장합니다.

  • '현재'와 합계에 대해 모듈로 연산을 수행합니다.

  • 루프의 모든 반복이 완료되면 "현재" 변수의 값이 0이면 true를 반환합니다. 현재 변수의 값이 0이 아니면 false를 반환합니다.

으아악

출력

으아악

시간 복잡도 - O(N)

공간 복잡성 - O(1)

결론

우리는 문제를 해결하는 두 가지 방법을 배웠습니다. 첫 번째 방법은 배열에 더 적은 수의 요소가 포함된 경우에만 사용됩니다. 왜냐하면 stoi() 메서드에는 문자열을 정수로 변환할 때 몇 가지 제한 사항이 있기 때문입니다. 두 번째 방법은 일반적이며 N개의 배열 요소에 사용할 수 있습니다.

위 내용은 배열 요소를 연결하여 형성된 숫자가 해시된 숫자인지 확인합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 tutorialspoint.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제