inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

3-K와 문제의 단순화

3-K 질문있습니다.

해결된 질문

44

원재

작성한 질문수 15

0

안녕하세요 큰돌님:)

http://boj.kr/b242ee3c08074321874c8a8c4a09c09e

위와 같이 코드를 작성했습니다.

시간 초과를 생각해서 물인 부분을 모두 queue에 담았고 그 다음 이전 수업에서 알려주신 qsize를 정의해서 유사 플루드필(?)을 진행했습니다.

영상을 보니 백조가 있는 위치도 물로 지정해야 함을 이해했습니다. 다만 이 코드에서 시간 초과가 나는 이유는 백조의 탐색이 매번 이어지기 때문인가요?

c++ 코딩-테스트

답변 2

0

큰돌

안녕하세요 원재님 ㅎㅎ

네 맞습니다.

이문제는 정말 시간초과가 빡센 문제라서... 하나라도 비효율적인 코드가 있으면 안됩니다.

    while(true) {
        memset(visited, 0, sizeof(visited));
        dfs(swanList[0].first, swanList[0].second, 1);

이부분이 비효율적이여서 시간초과가 나는 것 같습니다. 매번 초기화를 진행하지 말고 -> 진행한 visited 시점에서 초기화를 진행하지말고 그 시점에서 나아가면서 차곡차곡 visited를 채우는 식으로 진행하게 해주세요

 

 


 

또 질문 있으시면 언제든지 질문 부탁드립니다.

좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :)

감사합니다.

강사 큰돌 올림.

0

인프런 AI 인턴

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

백조의 위치를 물로 지정하고 시작하는 것은 BFS 초기화를 보다 효율적으로 하는 방법이며 이를 통해 탐색의 시작점을 줄일 수 있습니다. 하지만 시간 초과 문제는 여러 곳에서 발생할 수 있습니다. 구체적으로는 아래와 같은 방법으로 문제를 확인하고 해결할 수 있습니다.

  1. 큐 초기화 및 복사 비용 줄이기: 매 반복마다 큐의 상태를 전부 초기화하거나 복사하는 과정이 비효율적으로 동작할 수 있습니다. 이를 줄이는 방법 중 하나는 백조와 물의 상태를 별도의 큐로 관리해놓고, 매 사이클마다 갱신하는 것입니다.

  2. 방문 배열 활용: 방문 체크를 위해 사용되는 배열의 초기화와 갱신을 최적화해야 합니다. 예를 들어, 새로 방문한 위치만 별도로 기록하고, 매번 전체 배열을 초기화하지 않는 것이 좋습니다.

  3. 반복적인 탐색 로직 개선: 두 백조가 만날 수 있는 가능성을 매번 탐색하는 것은 시간 낭비가 클 수 있습니다. 즉 이미 탐색이 완료된 지점은 다시 탐색하지 않도록 체크해야 합니다.

관련 질문과 유용한 답변들이 있어 추가적인 최적화 방법을 참고하기에 좋은 게시물을 추천드립니다:

  • 3-K 코드 질문있습니다: BFS의 시간 복잡도를 최적화하는 다양한 테크닉이 다루어져 있으며, 플러드필과 효율적인 큐 사용법에 대해 자세히 설명되어 있습니다.

이 해답들은 시간 초과를 줄이기 위한 다양한 기법들을 소개하고 있으며, 이를 통해 보다 빠르고 효율적으로 답안을 개선할 수 있는 방법들을 발견할 수 있습니다.

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

코딩살구클럽 가입 문의

0

6

1

코딩 살구 클럽 컴파일 에러

0

7

1

추천 문제

0

12

1

코딩살구클럽 승인

0

13

1

코살구 1주차 1940번 문제 조건과 프라이빗 테스트 불일치 문의

0

23

2

문제를 고민하는 시간 관련

0

27

2

코딩살구클럽

0

39

2

코딩살구클럽 문의

0

39

2

코딩살구클럽 승인

0

36

2

DP 경우의 수 설명이 이해가 되지 않습니다.

0

34

2

3-F 채점 관련 질문

0

32

1

BFS, DFS 활용이 되는 상황에서의 방향성

0

34

2

코딩살구클럽 승인

0

45

2

코딩살구클럽승인

0

39

3

코딩살구클럽 승인

0

55

2

3-D 관련 질문

0

35

2

코살구 회원가입 문의

0

45

2

코살구 로그인 문제

0

65

2

3-A 문제 풀이 관련 질문

0

56

3

2-O 질문 있습니다

0

38

2

2-T 문제에 관한 질문

0

40

2

코딩 살구 클럽 접속 및 사용방법 문의

0

63

2

안녕하세요~. 현재 코살코딩클럽 사이트가 접속이 안됩니다~

0

67

2

코딩살구클럽 로그인문제

0

85

3