inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

5-O

5-O

해결된 질문

253

땅콩땡콩

작성한 질문수 2

0

큰돌님 안녕하세요.강의 잘 듣고 있습니다.

제 나름대로 고민해보고 풀어 제출하였는데 Segementation fault가 뜹니다.반례를 찾으려고 노력했지만 어느 부분이 문제인지 잘 모르겠습니다.도움 좀 부탁드리겠습니다 ㅠㅠ 

 

http://boj.kr/38620660c1684a9f96e362ffbdb9ebc4

c++ 코딩-테스트

답변 2

0

큰돌

안녕하세요 ㅎㅎ

사실 반례 찾고 싶어서 여러모로 시도해봤다가

잘 안되서....

그 경우에는 그냥 코드 다듬으면서 풀거든요 ㅎㅎ

그냥 다듬다 보니 맞게 되었는데요

이런 코드를 하려고 했던게 아니실까요?

#include <bits/stdc++.h>
using namespace std;

struct A {
    int r, c, s;
};

const int MAX = 54;
vector<A> info;
int N, M, K;
int a[MAX][MAX], ret = 9e8;

void rotate(A rcs, int arr[MAX][MAX]) {
    int layerCount = rcs.s;
    for (int layer = 1; layer <= layerCount; ++layer) {
        int top = rcs.r - layer, left = rcs.c - layer;
        int bottom = rcs.r + layer, right = rcs.c + layer;

        int prev = arr[top][left];
        for (int i = left + 1; i <= right; ++i) swap(arr[top][i], prev);
        for (int i = top + 1; i <= bottom; ++i) swap(arr[i][right], prev);
        for (int i = right - 1; i >= left; --i) swap(arr[bottom][i], prev);
        for (int i = bottom - 1; i >= top; --i) swap(arr[i][left], prev);
    }
}

int main() {
    ios_base::sync_with_stdio(0);
    cin.tie(NULL);
    cout.tie(NULL);
    cin >> N >> M >> K;
    for (int i = 0; i < N; i++) {
        for (int j = 0; j < M; j++) {
            cin >> a[i][j];
        }
    }
    
    vector<int> v;
    for (int i = 0; i < K; i++) {
        int r, c, s;
        cin >> r >> c >> s;
        info.push_back({r - 1, c - 1, s});
        v.push_back(i);
    }
    
    do {
        int temp_arr[MAX][MAX];
        memcpy(temp_arr, a, sizeof(a));
        
        for (int i : v) {
            rotate(info[i], temp_arr);
        }
        
        for (int i = 0; i < N; i++) {
            int sum = 0;
            for (int j = 0; j < M; j++) {
                sum += temp_arr[i][j];
            }
            ret = min(ret, sum);
        }
    } while (next_permutation(v.begin(), v.end()));
    
    cout << ret;
    return 0;
}


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

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

감사합니다.

강사 큰돌 올림.

1

땅콩땡콩

이 코드를 보니 제 코드는 쓸데없는 부분이 많은 것 같네요.

코드 참고할 때마다 감탄하고 있습니다.

큰돌님 감사합니다!! 😊

0

인프런 AI 인턴

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

땅콩땡콩님, 질문 주셔서 감사합니다. Segmentation fault는 주로 잘못된 메모리 접근, 예를 들어 할당되지 않은 메모리를 참조하거나 배열의 범위를 벗어난 접근 등에서 발생합니다.

문제 해결을 위해 다음과 같은 점을 확인해보시는 것을 추천드립니다:

  1. 배열이나 포인터를 사용하는 부분에서 인덱스가 배열의 크기를 벗어나지 않는지 확인해보세요.
  2. 동적 메모리 할당을 사용하는 경우, 할당과 해제가 적절히 이루어지고 있는지 검토해보세요.
  3. 참조하는 포인터나 객체가 유효한지(널이 아닌지) 확인해보세요.
  4. 재귀 함수 호출 시 무한 재귀에 빠지지 않았는지, 스택 오버플로우를 일으키지 않는지 확인해보세요.

이외에도 개발 환경이나 사용 중인 툴에 따라 디버거를 사용하여 문제의 원인을 좀 더 쉽게 찾을 수 있습니다. 예를 들어, GDB 같은 디버거 도구를 사용하면 Segmentation fault 발생 지점을 정확히 파악할 수 있어요.

도움이 됐기를 바라며, 추가적으로 궁금한 점이 있으시면 언제든지 질문해주세요.

5-B

0

4

1

4 - A

0

30

2

코딩살구클럽 입장이 안됩니다

0

78

2

4-F 경우의 수 질문입니다.

0

34

2

코딩살구클럽 가입이 안됩니다.

0

81

2

살구 클럽에 대한 질문있습ㄴ디ㅏ

0

60

1

교안 158페이지 문의드립니다

0

46

2

코딩살구클럽 관련 건의사항

0

119

1

코살에 19942 다이어트 문제에 N의 범위가 빠져있슴니다

0

45

1

진행 방법 질문드립니다!

0

81

2

2-I) 왜 이 문제가 그래프이론 카테고리에 있는지 잘 모르겠습니다.

0

64

2

2주차 개념#12 트리 순회

0

33

2

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

0

318

2

백준 서비스 종료

9

953

1

sk 하이닉스 코테 대비

0

388

2

3-G 최댓값 질문

0

54

1

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

0

84

2

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

0

66

2

3-N 질문 있습니다.

0

68

2

학습방법

0

105

2

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

0

69

2

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

0

186

2

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

0

73

2

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

0

66

2