inflearn logo
강의

Khóa học

Chia sẻ kiến thức

Các vấn đề kiểm tra mã hóa cơ bản hàng đầu được giải quyết thực sự dễ dàng (với Java)

đồ trang sức và đá

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

199

wnrhd10821572

9 câu hỏi đã được viết

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 코테 준비 같이 해요!

Câu trả lời 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

217

1

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

1

250

1

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

0

305

2

질문드립니다~

0

194

1

left if문에 대해서

1

253

1

오타 인가요?

1

235

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