inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

3-K와 문제의 단순화

3-K 백조 문제 메모리 초과 질문

해결된 질문

287

이종현

작성한 질문수 19

0

http://boj.kr/54cbfbf55f6946edbeb3beb93d88f6bc

안녕하세요 강사님! 여태 틀린 문제 다시 한번 풀어보고 있습니다.

백조 문제에서 메모리 초과가 나서 제가 생각하기에 의심되는 부분들 (queue에 중복 좌표를 여러번 푸시하는 경우)을 없애고도 메모리 초과가 나길래 어느 부분이 문제일지 한번 봐주시면 감사하겠습니다..

로직 자체는 강사님 코드와 거의 비슷하게 떠올린 것 같은데 2차원 배열을 너무 많이 쓴 것이 문제인지.. 특정 케이스에서 queue가 너무 커지는 것이 문제일지 잘 감이 안 옵니다 ㅜ

 

c++ 코딩-테스트

답변 1

1

큰돌

안녕하세요 종현님 ㅎㅎ

코드 자체가 깔끔하고 너무 좋은데요? ㅎㅎ

틀린 부분이 없습니다.

메모리초과가 될만한 부분도 없습니다.

bool check() {
    queue<pair<int,int>> tempQ;
    while(q.size()){

q, tempq 아름답습니다.

다만 이부분이요.

        visited2[y][x] = 1; 
        for(int i=0; i<4; i++){
            int ny = dy[i] + y;
            int nx = dx[i] + x;

이렇게 하게 되면 queue에 중복되서 담기게 됩니다. 방문하면서 visited를 걸지 않게 되면 queue 에 일단 담아두고 ~ 그 다음에 visited를 체크하게 되거든요.

image제가 이렇게 바꿔봤습니다. 이게 조금 더 시간초과가 덜 걸리는 코드라고 보시면 됩니다.

        for(int i=0; i<4; i++){
            int ny = dy[i] + y;
            int nx = dx[i] + x;
            if(ny < 0 || nx < 0 || ny >= n || nx >= m)continue;
            if(!ar[ny][nx])continue;
            if(visited2[ny][nx])continue;
            ar[ny][nx] = 0;
            visited2[ny][nx] = 1; 

이렇게 되면 다음그림처럼 queue에 중복되서 담기지 않게 되는 것이죠.

image

그러나 이부분도 수정해서 제출했는데.. 메모리초과가 뜹니다. ㅎㅎ;;

이 문제 자체가 굉장히 타이트해서 그런거 같아요. 실제로 제 코드 조차도 조금만 바꿔도 메모리초과 또는 시간초과가 뜹니다.

문제 자체는 좋으나 시간, 메모리가 타이트하게 주어지는 문제라고 생각하시고 넘어가셔도 될 거 같습니다.

코드, 아름답게 잘 짜셨습니다.

 

 

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

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

감사합니다.

강사 큰돌 올림.

0

이종현

정성스런 답변과 좋은 말씀 항상 감사합니다 ~!

2주차 개념#12 트리 순회

0

5

1

백준사이트가 종료된다고 합니다.

0

198

2

백준 서비스 종료

9

629

1

sk 하이닉스 코테 대비

0

345

2

3-G 최댓값 질문

0

46

1

모듈러 연산 값이 10이 아닌 경우도 있지 않나요?

0

77

2

3-I 코드 질문드립니다.

0

59

2

3-N 질문 있습니다.

0

63

2

학습방법

0

98

2

4-H 질문 있습니다 (코드 리뷰)

0

65

2

코딩테스트 어디까지 준비해야 하는지 질문이 있습니다.

0

161

2

2-O 반례가 무엇일지 어떤 부분이 틀렸는지 잘 모르겠습니다.

0

68

2

2주차 개념 #4-2. 인접행렬 질문있습니다.

0

62

2

1-A 문제풀이 후 궁금한 점이 생겨서 질문드립니다.

0

48

2

조합 재귀 풀이 확인 해주시면 감사하겠습니다.

0

66

2

함수별 시간복잡도

0

71

2

3-h 질문입니다.

0

47

1

안녕하세요 선생님. 시간 복잡도 4번 질문있습니다.

0

51

2

1-I 문제 질문 드립니다.

0

74

2

2-P 질문입니다.

0

55

1

mac에서 시작하기 관련

0

86

2

5-Q 질문

0

62

2

풀이 코드 질문

0

62

2

맞왜틀

0

67

2