인프런 커뮤니티 질문&답변

이정현님의 프로필 이미지
이정현

작성한 질문수

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

2-T

2-T 질문있습니다!

해결된 질문

작성

·

30

0

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

안녕하세요 선생님, 2-T 접근방법에 대해 질문있습니다!

문제를 읽고 우선 queue나 stack으로 풀어야겠다는 생각은 들었는데, 해당 문제가 우측으로 더 큰항목이 있는지 비교(input과 특정 항목을 비교)하는 문제이기 때문에, queue로 구현하면 queue의 front에 가장 큰 값이 들어올 경우, 이후 항목에서 오큰수를 부여할 수 있는 수열들이 들어오더라도 queue를 pop하지 못하고, pop할 수 있는 항목들을 queue를 순회해서 찾는다고 하면 시간복잡도가 O(N^2)으로 커져버리니까 스택을 사용해야겠다! 라는 사고에 따라 스택을 사용하기로 결정하면 되나요?

또 한가지 질문이 있습니다..!! 정답 배열로 정수를 출력하는 문제라고 가정하면, int배열을 사용하여 푸는 것과 벡터<int> v 에 푸시하여 사용하는 것 어떤 것이 유리한지 궁금합니다!

답변 2

0

큰돌님의 프로필 이미지
큰돌
지식공유자

안녕하세요 정현님 ㅎㅎ

시간복잡도가 O(N^2)으로 커져버리니까 스택을 사용해야겠다! 라는 사고에 따라 스택을 사용하기로 결정하면 되나요?

-> 네 맞습니다. 좋은 흐름입니다.

 

정답 배열로 정수를 출력하는 문제라고 가정하면, int배열을 사용하여 푸는 것과 벡터<int> v 에 푸시하여 사용하는 것 어떤 것이 유리한지 궁금합니다!

-> 둘 다 성능상 비슷합니다. 참고로 정수를 순차적으로 int 타입으로 출력하는 것과 정답 정수를 vector에 담아서 한꺼번에 출력하는 것의 경우 전자가 더 성능상 좋습니다.

 

감사합니다.

 

 

0

안녕하세요, 인프런 AI 인턴입니다. 이정현님 질문에 대해 다음과 같이 답변드리겠습니다.

질문하신 C++ 코딩 테스트 문제 접근 방법과 관련하여, 스택과 큐의 사용에 대한 고민을 잘 정리해주셨습니다. 말씀하신 대로 큐를 사용하게 되면 특정 조건에 따라 O(N^2)의 시간복잡도가 발생할 수 있는 반면, 스택을 사용하면 효율적인 O(N) 시간복잡도로 문제를 해결할 수 있습니다. 이는 스택의 LIFO(Last In, First Out) 구조 덕분에, 현재 인덱스의 값보다 작은 값을 순차적으로 pop하여 처리할 수 있기 때문입니다. 이러한 방식은 “오큰수”와 같은 문제에서도 자주 활용됩니다.

다음은 이와 관련된 유사한 질문과 답변입니다:
- “2-T 질문드립니다.”: 벡터의 크기를 사전에 설정하지 않고 사용하면 발생하는 문제와 이를 해결하는 방법에 대해 설명한 질문입니다.

정답 배열로 정수를 출력하는 경우, int 배열벡터<int>를 사용하는 것 사이의 차이는 다음과 같습니다:
1. int 배열: 정적인 크기를 가지며, 미리 크기를 결정해야 합니다. 메모리 활용이 효율적일 수 있지만, 배열 크기 결정이 어려운 경우에는 유연성이 떨어질 수 있습니다.

  1. 벡터: 동적인 크기를 가지며, 필요에 따라 크기를 자동으로 조정합니다. 사용이 직관적이며 크기를 예측하기 어려운 경우에 특히 유용합니다. 단, 자동으로 메모리를 재할당하는 과정에서 약간의 오버헤드가 있을 수 있습니다.

결국, 초기 크기를 명확히 알 수 있으면 배열을 활용하고, 그렇지 않다면 벡터를 사용하는 것이 좋습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

이정현님의 프로필 이미지
이정현

작성한 질문수

질문하기