인프런 커뮤니티 질문&답변
반복문의 기저조건(while)/경계조건(for)을 빠르게 설정하는 방법이 있을까요?
작성
·
23
·
수정됨
1
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
안녕하세요 선생님, 먼저 좋은 강의 항상 감사드린다는 말씀부터 올립니다.
현재 우선순위 큐와 힙 구현부분을 수강 중인데 반복문 구현이나 반복문 탈출 조건에 대해 선생님께서는 어떻게 생각하고 결정하시는지 질문드리고자 합니다.
저의 경우 구현 부분을 수강하면서 크게 두가지 생각을 가졌습니다(우선순위 큐와 힙 구현 부분 이외 다른 트리구조도 마찬가지이지만 대표적으로).
상황 1) 우선순위 큐와 힙 insert(데이터 삽입) 구현 시 루트노드가 아니며, 마지막 삽입 위치가 부모노드의 오른쪽에 있는 경우에, 오른쪽 형제노드를 구하기 위해 while 반복문 실행한다.
이때, while(currentTree.getParentTree().getParentTree() != null){ ..
으로 while 반복문의 기저조건을 설정해주었는데, 반복하면서 부모노드로 올라갈때 루트노드는 형제노드가 없으므로 그 이전까지 진행하는 기저조건으로 설정한다.
상황 1 구현하면서 생긴 문제점(의문점)) 기저조건을 currentTree.getParentTree()으로 최초 설정하였을 것 같다는 생각이 들었습니다. 수강내용을 천천히 살펴보았을때도, 루트노드의 경우와 그 이상의 범위탐색시 불필요한 반복문이 또 다시 실행된다는 점을 이해하기까지 시간이 오래 소요되었습니다.
질문요지) 선생님께서는 이러한 기저조건 설정(while문의 경우) 혹은 경계조건 설정(for문의 경우)을 어떤 과정으로 생각하고 구현하시는지 질문드리게 되었습니다.
참고로 저의 경우, 현재 수강하면서 코드로 직접 구현할때 최대한 머릿속에서 구현과정을 그려가면서 이해하기 위해 노력중입니다(실제 코딩테스트 환경에서는 종이를 사용하지 못하기에 머릿속으로 구현과정을 이해하는 습관을 장착하고 있습니다).
이때 기저조건(while 반복문) 말고도 for 반복문을 사용할때 이에 대한 경계조건(<, <= 등의 사용을 고려하는 것까지)을 설정하기 위해 3~4번의 반복문을 머릿속에 생각하고 지워가면서 힘들게 구현하고 있는데, 선생님께서는 이를 어떻게 구현하고 계시는지 문득 궁금하게되어 질문드리게 되었습니다.
아직 이런 알고리즘이 익숙치 않아 생긴 의문일까요? 알고리즘을 많이 살펴본다고 하더라도, 이러한 기본적인 부분부터 탄탄하게 잡고 나가는 것이 필요하다는 생각인데, 지금 이 부분이 오래 걸리다보니 소요시간을 줄이기 위한 노하우를 여쭙고 싶습니다..!
항상 감사드립니다.
답변 1
0
안녕하세요!😊
예시 코드의 변수명과 함수명, 고민 내용을 보니 스스로 고민하신 흔적이 보입니다.
실제로 본인이 생각했던 로직을 구현하고 실행했을 때 원하지 않는 동작을 하는 경우는 흔합니다.
이럴 때는 디버깅을 통해 어떤 부분이 잘못됐는지 체크하고 해당 부분을 수정하는 과정은 필수입니다.
따라서 한 번에 원하는 동작을 구현하지 못했다고 하더라도 실망하지 말고 디버깅을 통해 보안하시길 바랍니다.
저도 수업을 준비하면서 코드를 작성할 때 여러 버그가 있어서 수정을 해왔습니다.
궁금증이 해결되셨나요?😄





