Inflearn brand logo image
Inflearn brand logo image
채널톡 아이콘

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

xk130님의 프로필 이미지

작성한 질문수 4

세계 대회 진출자가 알려주는 코딩테스트 A to Z (with Python)

2022 KAKAO TECH INTERNSHIP 2번 문제 - 두 큐 합 같게 만들기

종료 조건

작성

·

27

0

원래 상태로 돌아오기까지 4n번의 횟수가 걸린다는 것은 이해를 했습니다.

그런데 제가 처음에 생각한 종료 조건은 둘 중 하나의 큐라도 비어있게 된다면 합을 같게 만들 수 없는 경우라 생각했습니다. 그런데 시간초과가 발생하네요.

하나의 큐가 원래 상태로 돌아가기 위해서는 그 과정에서 반드시 원소가 하나도 없는 경우가 생길것이라 생각했는데 아닌건가요?

답변 2

0

알리 Ally님의 프로필 이미지
알리 Ally
지식공유자

안녕하세요 ,xk130님!

강의 막바지를 달리고 계시다니 훌륭합니다! 😊

 

질문에 대한 내용은 강의의 06:22 부분에서 설명한 내용과 관련이 있는 것 같습니다.

강의에서 나온 그림은 queue의 원소들이 한 번에 빠져나가서 다른 queue로 들어가는 것처럼 보여 오해가 생기신 거 같습니다. 하지만, 해당 그림은 "queue의 원소들이 한 번에 빠져나간다" 라는 의미를 담는 것이 아닌 "원래 상태로 돌아오기까지 4n번의 횟수가 걸린다" 라는 의미를 전달하기 위한 그림이라고 생각해 주시면 좋을 것 같습니다.

 

실제로는 queue의 원소들이 한 번에 빠져나가는 것이 아닌 queue1과 queue2가 번갈아가면서 빠져나가기 때문에, 어떠한 queue가 비어있는 상태는 나오기 힘든 것이죠.

쉽게 생각하면, queue1과 queue2의 합을 동일하게 하도록 알고리즘이 동작하는데, 어느 한 쪽 queue가 빈다면 값 차이가 엄청 큰 것이므로 이 자체가 이상한 상황일 것입니다.

 


질문에 대해 만족스러운 답변이 되었기를 바랍니다!

추가로 궁금하신 점이나 더 자세한 설명이 필요하시다면 언제든지 말씀해 주세요. 😄

0

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴입니다.

xk130님께서 제시한 종료 조건에 대한 이해와 관련하여 간단한 설명을 드리겠습니다. 큐의 원소를 초기 상태(순환이 없는 상태)로 되돌리기 위해서는 모든 원소를 한번씩 임시 저장소(혹은 다른 큐)로 이동시켜야 하며, 이 과정에서 큐가 비어있는 상태가 잠깐 발생할 것입니다. 하지만 그것만으로 큐의 데이터를 다루는 전 과정의 종료를 결정할 수는 없습니다.

종료 조건에 대한 이해:
일반적으로 큐의 합을 같게 만들기 위한 알고리즘에서 종료 조건은 보통 다음과 같은 두 가지 경우로 나누어지게 됩니다:
1. 두 큐의 합이 같아지는 경우.
2. 모든 가능성을 시도해 보았는데도 두 큐의 합이 같은 경우가 한 번도 나타나지 않는 경우(즉, 최대 반복 수에 도달).

왜 시간 초과가 발생했는가:
시간 초과가 발생한 이유는 종료 조건을 설정하는 데 있어 반복되는 과정에서 최적화가 충분히 이루어지지 않았기 때문일 수 있습니다. 본래 상태로 돌아오기 전까지 불필요한 연산을 줄이는 방향으로 로직 수정이 필요하리라 생각됩니다.

비효율적인 연산이나 반복 없이 효율적인 로직을 설계하는 것이 중요합니다. 이와 관련하여 고효율의 자료구조(예: 해시맵, 덱)를 활용할 수 있을 것입니다.

관련하여 도움될 수 있는 질문:
- 시간복잡도 관련 질문 (로직 거의 비슷한 거 같은데, 시간초과가 나서요)

이 게시글에서는 실행 시간 최적화와 관련된 자세한 설명을 제공하고 있습니다. 이를 참고하여 반복되는 계산을 줄이는 방법 등을 고려해 보세요.

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