inflearn logo
강의

Course

Instructor

Readable Code: Mindset for Writing Readable Code

Function Maintenance (2) - Algorithm Replacement

stack 대신 queue 를 사용해 bfs 로 변경해도 되나요??

162

ewgregerg c

26 asked

0

아래처럼 Stack 대신 Queue 를 사용해 BFS 로 변경해도 문제가 없을까요?

 private void openSurroundedCellsBFS(CellPosition cellPosition) {
    Queue<CellPosition> queue = new LinkedList<>();
    queue.add(cellPosition);

    while (!queue.isEmpty()) {
        openAndEnqueueCell(queue);
    }
}

private void openAndEnqueueCell(Queue<CellPosition> queue) {
    CellPosition currentCellPosition = queue.poll(); // 큐에서 꺼냄

    if (isOpenedCell(currentCellPosition)) {
        return;
    }
    if (isLandMineCellAt(currentCellPosition)) {
        return;
    }

    openOneCellAt(currentCellPosition);

    if (doesCellHaveLandMineCount(currentCellPosition)) {
        return;
    }

    List<CellPosition> surroundedPositions = calculateSurroundedPositions(currentCellPosition, getRowSize(), getColSize());
    for (CellPosition surroundedPosition : surroundedPositions) {
        queue.add(surroundedPosition);
    }
}

객체지향 리팩토링 클린코드-기획전

Answer 2

0

wbluke

안녕하세요, ewgregerg c 님!

네, 그럼요. 저는 설명의 편의를 위해 DFS를 선택했고요. 탐색 과정에 문제만 없다면 어떤 방법을 사용해도 괜찮습니다.

감사합니다. 🙂

0

communityai8509

안녕하세요, 인프런 AI 인턴입니다.
ewgregerg c님, 질문 주셔서 감사합니다.

질문하신 부분은 Stack을 사용하는 DFS(깊이 우선 탐색)를 Queue로 변경하여 BFS(너비 우선 탐색)로 구현한 코드 인 것 같습니다. 큐(Queue)를 사용함으로써 BFS 구조로 문제 없이 변경할 수 있습니다. BFS는 한 레벨씩 탐색을 진행하므로 각 단계에서 주변 노드들을 모두 탐색하도록 하기 위해 큐를 사용합니다.

제시해주신 코드는 BFS 방식으로 충분히 작동할 것으로 보입니다. Queue를 사용하여 순차적으로 노드를 탐색하고 있으며, 현재 코드로는 문제 없이 작동할 것 같습니다. 기본적으로 BFS에서는 현재 지점의 주변 노드들을 큐에 추가하여 그 다음 레벨의 노드들을 탐색하는 방식입니다.

코드의 각 메소드들이 의도대로 동작하는지(예: isOpenedCell, isLandMineCellAt, openOneCellAt 등)를 확인하여 검증하실 수 있습니다.

추가적인 도움이 필요하시다면 언제든지 질문해 주세요! 😊

출처 링크를 참조하시면 관련된 더 많은 정보를 얻으실 수 있습니다.
Spring Boot Hot Swapping - Reload Java Classes without Restarting

[강의 질문] 메서드 선언부

0

89

1

[강의 질문] 메서드와 추상화

0

60

2

DIP 개념에 대한 질문입니다.

0

64

1

만약 보드를 이용한 게임의 종류가 더 다양해진다면 어떻게 될 수 있을지에 대한 고민

0

85

2

DIP 설명 후반부에 IOC에 대한 질문 드립니다.

0

78

2

안녕하세요 ! 혹시 자바가 아닌 다른 객체지향 언어를 알고있어도 강의를 들어도 괜찮을까요 ?!

0

70

1

안녕하세요 메서드명 때문에 고민이 있어서 질문드립니다.

1

64

2

자바 record 사용에 대해서 질문 드립니다!

0

127

2

강의 내용 정리 및 자료 제작 툴 문의 드립니다.

0

136

2

사용할 변수 가깝게 선언하기 질문

0

92

1

오버 엔지니어링

0

147

2

학습용 java/spring 오픈소스 추천

1

360

2

중복된 메서드 줄이는 방법

0

182

2

MarketPlace에서 Sonarlint 검색이 안됩니다.

0

413

3

isLandMineCell() 메서드 질문

0

208

1

Cell[][]BOARD 매개변수받기

0

152

2

ConsoleInputHandler에서 왜 final붙여야 하는지

0

192

1

정적 생성자 메서드 of, from

0

264

2

Getter관해서

0

148

3

이름 바꾸기

0

129

2

현업에서 ISP를 도입하려는데 인터페이스 설계에 있어서 의문이 있습니다.

0

206

2

null을 가질 수 있는 값을 인자로 넘겨야 하는 경우

0

249

3

리팩토링을 하고 난 뒤 다시보면 오히려 더 복잡해 보이는것 같은 느낌입니다..

0

251

2

조합 관계에 대해 질문있습니다.

0

164

2