이 영역을 누르면 첫 페이지로 이동
butter_shower 블로그의 첫 페이지로 이동

butter_shower

페이지 맨 위로 올라가기

butter_shower

[Algorithm] 인프런 강좌 따라하며 배우는 알고리즘! 70장 ~

  • 2020.07.03 15:42
  • 알고리즘 Algorithm
글 작성자: _rian

70장. 그래프 최단거리 (BFS)

다음 그래프에서 1번 정점에서 각 정점으로 가는 최소 이동 간선수를 출력하세요.

입력

첫째 줄에는 정점의 수 N(1<=N<=20)와 간선의 수 M가 주어진다. 그 다음부터 M줄에 걸쳐 연결 정보가 주어진다.

출력

1번 정점에서 각 정점으로 가는 최소 간선수를 2번 정점부터 차례대로 출력하세요.

#include <iostream>
#include <vector>
#include <queue>
#include <algorithm>

using namespace std;
int N;
vector<int> map[21];
//int ch[21];

queue<int> jobs;

void BFS(int destination);

int main(){
    int M;
    int from, to;

    cin >> N >> M;
    for(int i=0; i<M; i++){
        cin >> from >> to;
        map[from].push_back(to);
    }

    for(int i=2; i<=N; i++){
        BFS(i);
    }

    return 0;
}

void BFS(int destination){
    int ch[N];
    int start = 1;
    ch[1] = 1;
    jobs.push(1);
    int cnt = 0;
    int cost = 0;
    while(jobs.size() != 0){
        cost++;
        start = jobs.front();
        for(int i=0; i<map[start].size(); i++){
            if(ch[map[start][i]] == 0){
                jobs.push(map[start][i]);
            }
        }
    }
}

하다가 못풀었다.
얘는 근데 DFS 써야 하는 문제 아님??!?!


71장. 송아지 찾기 (BFS : 상대트리검색)

현수는 송아지를 잃어버렸다. 다행히 송아지에는 위치추적기가 달려있다. 현수의 위치와 송아지의 위치가 직선상의 좌표 점으로 주어지면 현수는 현재 위치에서 송아지의 위치까지 다음과 같은 방법으로 이동한다.

현수는 스카이콩콩을 타고 가는데 한 번의 점프로 앞으로 1, 뒤로 1, 앞으로 5를 이동할 수 있다. 최소 몇 번의 점프로 현수가 송아지의 위치까지 갈 수 있는지 구하는 프로그램을 작성하세요.

입력

첫 번째 줄에 현수의 위치 S와 송아지의 위치 E가 주어진다. 직선의 좌표점은 1부터 10,000까지이다.

출력

점프의 최소횟수를 구한다.

나의 코드

못풀었다.. 바로 선생님의 코드를 보자!!

선생님 코드

#include <stdio.h>
#include <vector>
#include <queue>
#include <algorithm>

using namespace std;

int ch[10001], d[3] = {1, -1, 5};

int main(){
    int s, e, x, pos, i;
    queue<int> Q;

    scanf("%d %d", &s, &e);

    ch[s] = 1;
    Q.push(s);
    while(!Q.empty()){
        x = Q.front();
        Q.pop();
        for(i=0; i<3; i++){
            pos = x + d[i];
            if(pos <= 0 || pos >10000) continue;
            if(pos == e){
                printf("%d\n", ch[x]);
                exit(0);
            }
            if(ch[pos] == 0){
                ch[pos] = ch[x] + 1; 
                Q.push(pos);
            }
        }
    }
}

와

~

선생님은 완전 천재적!!

여기서 포인트는 Ch 배열이 거리 배열도 된다는 것!

ch[pos] = ch[x]+1이라는 간단한 함수로 바로 만들어버릴 수 있다. 위의 문제도 마찬가지!

'알고리즘 Algorithm ' 카테고리의 다른 글

[Algorithm] 인프런 강좌 따라하며 배우는 알고리즘! 73장~75장  (0) 2020.07.08
[Algorithm] 인프런 강좌 따라하며 배우는 알고리즘! 72장  (0) 2020.07.05
[Algorithm] 인프런 강좌 따라하며 배우는 알고리즘! 62장 ~ 63장  (0) 2020.06.27
[Algorithm] 인프런 강좌 따라하며 배우는 알고리즘! 58장 ~ 59장  (0) 2020.06.25
[Algorithm] 인프런 강좌 따라하며 배우는 알고리즘! 49장 ~ 51장  (0) 2020.06.20

댓글

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • [Algorithm] 인프런 강좌 따라하며 배우는 알고리즘! 73장~75장

    [Algorithm] 인프런 강좌 따라하며 배우는 알고리즘! 73장~75장

    2020.07.08
  • [Algorithm] 인프런 강좌 따라하며 배우는 알고리즘! 72장

    [Algorithm] 인프런 강좌 따라하며 배우는 알고리즘! 72장

    2020.07.05
  • [Algorithm] 인프런 강좌 따라하며 배우는 알고리즘! 62장 ~ 63장

    [Algorithm] 인프런 강좌 따라하며 배우는 알고리즘! 62장 ~ 63장

    2020.06.27
  • [Algorithm] 인프런 강좌 따라하며 배우는 알고리즘! 58장 ~ 59장

    [Algorithm] 인프런 강좌 따라하며 배우는 알고리즘! 58장 ~ 59장

    2020.06.25
다른 글 더 둘러보기

정보

butter_shower 블로그의 첫 페이지로 이동

butter_shower

  • butter_shower의 첫 페이지로 이동

검색

메뉴

  • All Categories
  • About Me
  • Guest Book

카테고리

  • 전체보기 (223)
    • 💫 주인장 이야기 (17)
    • 🌱 와글와글뻘글 (27)
    • IT Trends (11)
    • 주인장 일상 (0)
    • 📒 내 마음대로 독서 서평 (12)
    • 머신러닝 꿈나무 (30)
      • 기본 개념 (6)
      • Hands-on! (5)
      • Paper Review (5)
      • 캐린이의 Kaggle (1)
    • 알고리즘 Algorithm (33)
      • PS (8)
    • Computer Engineering (75)
      • Python (8)
      • Cloud Computing (9)
      • C (9)
      • C++ (0)
      • Java (6)
      • Django 장고 (4)
      • 임베디드 시스템 (10)
      • 병렬 처리(Parallel Processing) (9)
      • 데이터 통신 Data communication (4)
      • 유닉스 시스템 (Unix System) (3)
      • GitHub (1)
      • 마이크로 프로세서 (micro processor) (1)
      • 데이터 마이닝 (1)
    • Error Note 🚨 (3)
    • 영어 공부 (6)
      • Live Academy (6)
    • HOBBY (2)
      • Film Log (2)

최근 글

정보

_rian의 butter_shower

butter_shower

_rian

나의 외부 링크

  • Github
  • Facebook
  • Instagram
  • LinkedIn
  • Twitter

블로그 구독하기

  • 구독하기
  • RSS 피드

방문자

  • 전체 방문자
  • 오늘
  • 어제

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기
Powered by Tistory / Kakao. © _rian. Designed by Fraccino.

티스토리툴바