쉬움 0명 해결 정답률 0%

누락된 숫자

0부터 n까지에서 빠진 하나의 숫자를 찾으세요.

배우게 될 내용

  • 0..n의 기대 합 계산하기
  • 차이로 빠진 값 찾기
  • 정렬 없이 한 번의 순회로 풀기

문제

원문 보기 (영어)

리스트에는 0, 1, …, n 중에서 n개의 서로 다른 숫자가 들어 있습니다. 따라서 이 범위에서 정확히 하나의 숫자가 누락되어 있습니다. 그 숫자를 찾으세요. (힌트: 예상되는 합과 실제 합을 비교해 보세요.)

missing_number(numbers)를 구현하세요.

입력

numbers: 0부터 n까지 중 n개의 서로 다른 숫자.

출력

누락된 숫자를 반환하세요.

제약 조건

0 ≤ n ≤ 100,000

예시

예시 1
입력:
numbers = [3, 0, 1]

예상 출력:
expected = 2
입력:
std::vector<long long> numbers = {3, 0, 1};

예상 출력:
long long expected = 2;
입력:
long[] numbers = new long[] {3, 0, 1};

예상 출력:
long expected = 2;

설명

n = 3이므로 범위는 0–3입니다. 2가 누락되어 있습니다.

예시 2
입력:
numbers = [0]

예상 출력:
expected = 1
입력:
std::vector<long long> numbers = {0};

예상 출력:
long long expected = 1;
입력:
long[] numbers = new long[] {0};

예상 출력:
long expected = 1;

설명

n = 1이고 범위는 0–1입니다. 1이 누락되어 있습니다.

접근 방법

먼저 스스로 풀어 본 뒤 힌트를 하나씩 열어 보세요.

힌트 1

숫자는 0부터 n까지의 전체 범위를 따라야 하며, 하나만 비어 있습니다.

힌트 2

완전한 범위의 합과 실제 리스트의 합을 비교하세요.

힌트 3

빠진 값이 0 또는 n인 경우도 주의하세요.

예상 복잡도

시간 O(n), 추가 공간 O(1)

참고 자료

이 문제는 CodeUtility에 맞게 수정되었습니다. 위의 설명과 제한 조건을 따르세요.

다른 사람의 풀이 보기

커뮤니티 솔루션

아직 공개된 풀이가 없습니다. 문제를 풀고 첫 풀이를 공유하세요.