inflearn logo
강의

Course

Instructor

Coding test top basic problems that are really easy to solve (with Java)

Jewels And Stones

시간복잡도 질문드립니다.

199

wnrhd10821572

9 asked

1

int mySolution(String jewels, String stones) {

int count = 0;
for(char jewel : jewels.toCharArray()) {
for(char stone : stones.toCharArray()) {
if (jewel == stone) {
count ++;
}
}
}
return count;
}

제가 작성한 코드입니다.

쥬얼리 같은경우 유니크하다 했으므로 중복된 자료가 없기 때문에 set자료구조에 굳이 담을 필요가 있을까 생각해서 이런식으로 코드를 짰는데요

시간복잡도상 강사님과 같은 방식이 더 효율적인게 잘 이해가 되질 않습니다.

이중포문인 것은 알지만 자료구조에 담는시간 및 재확인 시간도 있기 때문에 시간상 제가짠 코드가 더 괜찮지 않을까란 의문이듭니다.

어떻게 이해하면 좋을까요?

java 코테 준비 같이 해요!

Answer 1

1

pushupman

고성빈님 , 안녕하세요 ~~~

질문 주셔서 감사합니다.

시간복잡도를 물어 보셨는데요. 시간복잡도는 면접에서도 서로에 생각을 물어보면서

답하고 개발한 소스코드에 대해서 얼마나 빠르게 메모리를 적게 쓰면서 해결할 수 있는지 물어보죠..

제 소스 코드는 로그가 2 + 7개가 찍힙니다.

for문을 각 각 두번 돌리죠, 아래처럼 그래서 시간복잡도는 O(J.length + S.length)

O(M+N)이고 결국 M=1000만개, N=1000만개를 돌려도 2천만개니까 

O(N)으로 보시면됩니다.  이해하시겠죠??

고성빈님 소스는  14개가 찍힙니다(아래그림). 이중 for문이지만 jewel과 stone의 length가 다르므로

O(M*N) 이죠 ,  O(J.length * S.length) 

for문을 두번돌리면 역쉬 좋지는 않죠?

제가 한 방법처럼 for문 각각 한번씩 돌리면 O(N)이 되니까  제가 한 방법으로 

하시는게 낫습니다.

0

wnrhd10821572

와 예시를 보니까 확 와닿네요. 다음부턴 잘이해가 안될 때 로그를 남겨서 다음부터는 확인해보겠습니다. 감사합니다!! ㅎㅎ

강의자료에 나오는 m과 n의 범위가 코딩하고 다른거 같습니다

0

252

0

나선형매트릭스 깃허브에 코드가 없는것같아요

0

206

0

로그 파일의 데이터 재정렬 코드가 깃허브에 없어요!

0

220

0

새로 생긴 기초강의 질문드려요

1

372

1

질문드립니다

1

218

1

Unique Paths Integer 질문입니다

0

218

1

subString 방법으로 문제 풀이 영상은 짤린건가요?

1

250

1

DFS 방식으로 푼 것이 맞나요?

0

305

2

질문드립니다~

0

195

1

left if문에 대해서

1

253

1

오타 인가요?

1

236

1

안녕하세요 강사님

1

186

1

질문 드립니다

0

170

2

Queue&Stack 문제해설집 문의

0

182

1

문제분석 로직 질문

1

227

1

시간 복잡도 문의드립니다.

1

229

1

for-each 문 질문있습니다!

0

292

1

강의영상에서 사용된 로그 메소드가 궁금합니다.

2

279

2

강의자료 + 문제 이해 관련 질문입니다

1

276

3

강사님 오류맞나요?

1

204

1

강사님 시간 복잡도에 대해서 질문드립니다.

1

170

1

질문입니다.

1

200

1

문제에 대한 이해

1

312

1

visited 체크 시점 질문있습니다!

1

504

1