플라즈밍
플라즈마 IT
플라즈밍
  • All (163)
    • MindSet (2)
    • Wisdom (8)
    • Book (18)
    • [Web] (6)
      • [Web]Guide (2)
      • [Web]HTML-CSS-JS (1)
      • [Web]ReactJS (0)
      • [Web]NextJS (1)
    • 퀀트주식투자 (4)
      • [리포트]포트폴리오 (4)
    • 자산배분전략 (2)
      • [리포트]자산배분전략 (1)
    • 포트폴리오 (0)
      • 발걸음 (0)
    • 개발 Note (3)
    • TipNote (5)
    • 알고리즘 (27)
      • 백준[BOJ] 오답노트 (27)
      • 백준[BOJ] 강의 정리 노트 (0)
    • etc-posts (18)
      • Unity :: C# 튜토리얼 (18)
    • Web&Know (23)
    • 끄적임 (4)
    • 세상이슈 (0)
    • Youtube 유튜브 (3)
      • Youtube 채널소개 (3)
    • 창업 Know&Idea (1)
    • Web&Dev (4)
    • 프로젝트 (6)
      • Unity5 Project (3)
      • UnrealEngine4 Project (2)
      • Web Page (1)
    • 주가차트-기술적분석 (2)
    • BlockChain (7)
    • SystemDesign (11)

인기 글

최근 글

hELLO · Designed By 정상우.
플라즈밍

플라즈마 IT

알고리즘/백준[BOJ] 오답노트

배열 초기화 방법 fill vs memset - 백준 알고리즘 오답노트 1260

2019. 5. 6. 20:11
반응형

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

 

1260번: DFS와 BFS

첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사이에 여러 개의 간선이 있을 수 있다. 입력으로 주어지는 간선은 양방향이다.

www.acmicpc.net

 

배열 초기화 방법 fill vs memset - 백준 알고리즘 오답노트 1260

 

 

#1. 문제를 잘 읽어보면 정점의 번호가 작은것 부터 탐색을 해야됨.

근대 백터에 u,v 입력때 정점의 번호는 랜덤이다. 그래서 정렬을 해줘야 된다.  

 


문제
그래프를 DFS로 탐색한 결과와 BFS로 탐색한 결과를 출력하는 프로그램을 작성하시오.
단, 방문할 수 있는 정점이 여러 개인 경우에는 정점 번호가 작은 것을 먼저 방문하고, 
더 이상 방문할 수 있는 점이 없는 경우 종료한다. 정점 번호는 1번부터 N번까지이다.

 

 


#2. 배열 초기화 방법 memset vs fill

 



1. memset은 cstring 에 fill은 algorithm 해더 파일에 
//check배열 초기화
//memset(check,0,sizeof(check));
fill(check,check+sizeof(check),0); // 포인터의 개념상 아래가 맞음!
//fill(check.begin(),check.end(),0); // X

 

 

 

//1260 

#include<cstdio>
#include<vector>
#include<algorithm>
#include<cstring>
#include<queue>

using namespace std;

vector<int> graph[1001];
bool check[1001];

void dfs(int node){
	check[node] = true;
	printf("%d",node); //디버깅
	for(int i = 0; i< graph[node].size() ; i++){
		int nnode = graph[node][i];
		if(check[nnode] == false){
			printf(" ");
			dfs(nnode);
		}
	}
}

void bfs(int node){
	queue<int> q; check[node] = true; q.push(node);
	while(!q.empty()){
		int node = q.front(); q.pop(); 
		printf("%d ",node);
		for( int i= 0; i < graph[node].size(); i++){
			int nnode = graph[node][i];
			if(check[nnode] == false){
				q.push(nnode); check[nnode] = true;
			}
		}
	}
}

int main(){
	int N,M,V; scanf("%d %d %d",&N,&M,&V);
	for(int i= 0 ; i< M ; i++){
		int u,v; scanf("%d %d",&u,&v);
		graph[u].push_back(v);
		graph[v].push_back(u);
	}
	for (int i=1; i<=N; i++) {
        sort(graph[i].begin(),graph[i].end());
    }
	dfs(V);
	memset(check,0,sizeof(check));
	printf("\n");
	bfs(V);
   puts("");
	return 0;
}

//FB1. 백터에 u,v 박을때 정점의 번호가 작은것 부터 안박는단 말이야. - 그래서 정렬을 해줘야됨. 
/*
	문제
그래프를 DFS로 탐색한 결과와 BFS로 탐색한 결과를 출력하는 프로그램을 작성하시오.
단, 방문할 수 있는 정점이 여러 개인 경우에는 정점 번호가 작은 것을 먼저 방문하고, 
더 이상 방문할 수 있는 점이 없는 경우 종료한다. 정점 번호는 1번부터 N번까지이다.
*/

//FB2. 배열 초기화 방법 memset vs fill
/*
	1. memset은 cstring 에 fill은 algorithm 해더 파일에 
	//check배열 초기화
	//memset(check,0,sizeof(check));
	fill(check,check+sizeof(check),0); // 포인터의 개념상 아래가 맞음!
	//fill(check.begin(),check.end(),0); // X
*/

 

 

 

 

 

 

 

 

 

 

 

 

플라즈마 IT 블로그 - 코딩 공부 정리, IT 정보 공유

 

https://plasmacodeing.tistory.com/

 

조금이라도 도움이 되었다면 공감 및 댓글 주세요~~

 

 

 

반응형
저작자표시 (새창열림)

'알고리즘 > 백준[BOJ] 오답노트' 카테고리의 다른 글

알고리즘 고수의 코드를 보다. - 백준 알고리즘 오답노트 5073  (0) 2019.05.07
다이나믹 프로그래밍 오버플로어 - 백준 알고리즘 오답노트 1012  (0) 2019.05.07
C 숫자 각 자리수 분해. 이,일의 자리수 분해 - 백준 알고리즘 오답노트 1110  (0) 2019.05.06
C++ int 오버플로어 예측 - 백준 알고리즘 오답노트 2004  (0) 2019.05.06
알고리즘 문제풀이전에 할것. 자료구조 선택하기 - 백준 알고리즘 오답노트 1012  (0) 2019.05.06
    '알고리즘/백준[BOJ] 오답노트' 카테고리의 다른 글
    • 알고리즘 고수의 코드를 보다. - 백준 알고리즘 오답노트 5073
    • 다이나믹 프로그래밍 오버플로어 - 백준 알고리즘 오답노트 1012
    • C 숫자 각 자리수 분해. 이,일의 자리수 분해 - 백준 알고리즘 오답노트 1110
    • C++ int 오버플로어 예측 - 백준 알고리즘 오답노트 2004
    플라즈밍
    플라즈밍
    퀀트 주식투자 자산배분 데이터분석 정보 공유 프로그래밍,투자 주제의 책 강의 리뷰 노하우 전수

    티스토리툴바