inflearn logo
강의

Course

Instructor

More Developers, Interview Guide

Algorithm complexity

한번 배워본 대로 문제를 풀어보았습니다.

303

yoonjoy

42 asked

0

1. 아 각 숫자가 두개씩 들어있는데 딱 한 숫자만 하나 들어있는 배열에서 하나만 든 숫자를 찾는거구나

2~3. 

{10, 10, 20, 30, 30, 40, 40, 50, 50, 60, 60} 에선 20이 혼자

{7, 10, 6, 4, 22, 10, 4, 5, 6, 5, 22} 에선 7이 혼자

4. 음 같은 숫자가 두개씩 있는 배열에서 딱 한 숫자만 한개가 들어있으니까 중복을 허용하지 않는 set 자료구조를 사용해보자

5-1. 배열의 각 요소들을 순회하면서 차례대로 set에 넣어보자

5-2. set에 값을 넣을 때 이미 존재하는 값이면 리턴값은 false이다.

5-3. add의 리턴값이 false이면 set에서 해당 요소를 삭제하자

5-4. 모든 요소들에 대한 순회가 끝나면, set에는 딱 1개의 값만 남아있을 것이므로 stream으로 1개의 값을 획득한다.

5-5. 획득한 값을 리턴한다.

6. 즉 제가 제시한 방법의 시간복잡도는 배열의 길이만큼 순회하고, 거기서 다시 논리비교를 매번 하니 O(), 공간 복잡도는 O(n)입니다

 

복잡도가 익숙지 않아서 참 어렵군요 

공간복잡도가 헷갈리는데, set에 n개만큼 더했다가 n개만큼 삭제하므로, n²이라고 생각했는데 잘 이해가 안갑니다.공간복잡도는 늘어난 것만 생각하고 줄어드는 것은 고려하지 않나요? 일단 계속 돌려보면서 이해하고 있겠습니당

면접 코테 준비 같이 해요!

Answer 1

0

whiteship

안녕하세요. 공간 복잡도는 해당 로직이 수행되는 동안 필요로 하는 공간인데, 최종적으로는 나머지 값들은 쌍이 맞아서 삭제가 되고 하나만 남는다 하더라도, "수행되는 동안"에는 1, 2, 3, 4, 5, 4, 3, 2, 1 과 같은 입력값을 처리할 때 최대 5개의 공간이 필요하기 때문에 O(1)이 아니라 O(n)이라고 합니다.

미션 수업의 오른쪽 깃발이 안보여요?

0

552

2

솔루션 오류

0

471

2

이력서를 보내고 싶은데 이메일 주소를 모르겠습니다.

0

534

1

이력서 미션 제출합니다.

0

414

1

이력서 미션 제출합니다.

0

336

2

소프트스킬 과제 제출입니다.

0

447

1

이력서 미션 제출합니다.

0

429

2

실수와, 실패의 차이점

0

475

0

확실히 모르는 것에 대해 질문이 들어온 경우

0

600

1

이력서 미션 올립니다.

0

298

1

이력서 리뷰 부탁드립니다!

0

578

5

6:50의 span값이 이상합니다.

0

281

1

자기소개서 항목 질문

0

496

3

이력서 관련 질문드립니다.

0

216

1

문제 오타가 있는거 같습니다.

1

210

1

26. 고객 중심에 관한 질문입니다.

0

297

1

안녕하세요 기선님 질문 드립니다!

0

218

1

선생님 안녕하세요. 이력서 미션에 대해서..

0

344

2

스택의 재귀에 대해서 선장님께서 말씀하신 부분 디버깅 한 내용 공유드립니다~!

0

262

1

강의 자료는 공유 안해주시나요?

0

352

2

미션 누락 및 영상 오류(?) 제보

0

180

3

안녕하세요 String 리터럴 생성방식에 대해 질문있습니다.

0

152

1

미션이 누락되어 있네요 확인 부탁드립니다.

0

220

1

count==n-1 일때만 left = left.next 하신다고 하셨는데요

0

252

2