[백준 1987][C++] 알파벳

2023. 9. 14. 23:01·코딩 공부/백준(C++)

문제 링크

https://www.acmicpc.net/problem/1987

 

오늘의 생각 : 시간 초과가 날때, 백트래킹 기준이 안보이면 방식을 바꿔보자.


◆문제 해결 및 설명◆

문제 해설 : 알파벳이 써있는 맵위 (0,0) 위치에서 출발하여 상하좌우로 움직일때, 새로 이동한 칸은 지금까지 지나온 모든 칸에 적혀있는 알파벳과 달라야 할때 최장거리를 구하여라

 

처음에는 맵을 나타내는 이차원 배열 map의 크기와 같게 visited 배열을 선언하고 못 가는 곳을 1로 설정해 dfs로 구현하였으나, 시간 초과로 인하여 visited를 일차원 배열로 설정 하였다.

Timeout

 

◆코드 전문◆

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int R, C, answer = 0;
vector<vector<char>> map;
vector<bool> visitied(200);
int dyx[] = {1, -1, 0, 0};

void dfs(int depth, int row, int col);

int main()
{
    cin >> R >> C;
    map = vector<vector<char>>(R, vector<char>(C));

    for (int i = 0; i < R; i++)
    {
        for (int j = 0; j < C; j++)
        {
            cin >> map[i][j];
        }
        cin.get();
    }

    dfs(1, 0, 0);
    cout << answer;
}

void dfs(int depth, int row, int col)
{
    if (visitied[map[row][col]])
    {
        return;
    }

    visitied[map[row][col]] = 1;
    for (int i = 0; i < 4; i++)
    {
        int ny = row + dyx[i];
        int nx = col + dyx[3 - i];
        if (ny >= 0 && ny < R && nx >= 0 && nx < C)
        {
            dfs(depth + 1, ny, nx);
        }
    }
    answer = max(answer, depth);
    visitied[map[row][col]] = 0;
    return;
}

 

'코딩 공부 > 백준(C++)' 카테고리의 다른 글

[백준 13549][C++] 알파벳  (1) 2023.10.21
[백준 1245][C++] 농장 관리  (0) 2023.10.21
[백준 17252][C++] 삼삼한 수 (3가지 방법)  (0) 2023.09.03
[백준 1461][C++] 도서관  (0) 2023.08.23
[백준 10942][C++] 팰린드롬?  (0) 2023.08.11
'코딩 공부/백준(C++)' 카테고리의 다른 글
  • [백준 13549][C++] 알파벳
  • [백준 1245][C++] 농장 관리
  • [백준 17252][C++] 삼삼한 수 (3가지 방법)
  • [백준 1461][C++] 도서관
메카인
메카인
  • 메카인
    메카인의 지식창고
    메카인
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 코딩 공부
        • TIL(Today I Learn)
        • TIL
        • 백준(C++)
        • Python
        • 알고리즘
        • 프로젝트 회고
      • C++
        • C++
        • C++ STL
        • C,C++ mCoding yotube
      • 게임개발
        • 언데드서바이벌_골드메탈_클론코딩
        • 3D_골드메탈_클론코딩
        • 유니티_문제해결
        • 게임 수학
      • Unreal 공부
        • UE5 GameDev
        • Unreal Engine 4 C++ The Ult..
      • 교재 문제 풀이
        • 운영체제
      • 정보처리기사
        • 정처기 요약
        • 정처기 오답노트
      • 학교수업
        • 데이터베이스
        • 프로그래밍 언어론
        • 리눅스 시스템
        • 네트워크
      • 일상
        • 주식
        • 독서
      • (비공개 전용)
        • memory
        • Build
        • OOP
        • Smart Pointer
        • lamda
        • 게임 수학
        • 모던 C++
        • 모던 C++ STL
        • 모던 C++ Concurrency, Paralle..
        • 책
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 글쓰기
    • 블로그 관리
  • 링크

  • 공지사항

    • 공지사항 - 인생과 블로그의 목표
  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
메카인
[백준 1987][C++] 알파벳
상단으로

티스토리툴바