• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    미해결

3-L 1987 질문

24.04.04 21:56 작성 24.04.04 22:14 수정 조회수 115

0

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

 

http://boj.kr/7cda610bf53f47c1a737bb078ccc36b5

 

안녕하세요 큰돌님. 예제 뿐만 아니라 반례들도 모두 맞는것 같은데 채점을 하면 퍼센트도 안뜨고 바로 틀렸다고 뜹니다.. 어떤 부분이 틀렸는지 모르겠습니다. 감사합니다.

답변 1

답변을 작성해보세요.

0

안녕하세요 찬민님 ㅎㅎ

어우 전반적으로 잘 짜셨네요 ㅎㅎ

제가 몇몇 틀린 부분이 있어서 다듬어 봤습니다.

이렇게 짜보시겠어요?

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

int r, c;
char arr[30][30];
int dr[] = {-1, 0, 1, 0};
int dc[] = {0, 1, 0, -1};
bool visited[30][30];
bool visited_alph[26];
int max_val = 0;

void dfs(int row, int col, int count) {
    max_val = max(max_val, count);
    visited[row][col] = true;
    visited_alph[arr[row][col] - 'A'] = true;

    for (int i = 0; i < 4; i++) {
        int row_tmp = row + dr[i];
        int col_tmp = col + dc[i];

        if (row_tmp < 0 || col_tmp < 0 || row_tmp >= r || col_tmp >= c || visited[row_tmp][col_tmp] || visited_alph[arr[row_tmp][col_tmp] - 'A']) {
            continue;
        }
        dfs(row_tmp, col_tmp, count + 1);
    }

    visited[row][col] = false;
    visited_alph[arr[row][col] - 'A'] = false;
}

int main() {
    cin >> r >> c;
    for (int i = 0; i < r; i++) {
        for (int j = 0; j < c; j++) {
            cin >> arr[i][j];
        }
    }

    dfs(0, 0, 1);
    cout << max_val << endl;
}

 

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

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

감사합니다.

강사 큰돌 올림.