-
오늘의 계획
-
대표적인 관계형 DB인 MYSQL 강의 듣기
- 섹션 3 - MySQL 테이블의 생성
-
DFS/BFS 알고리즘 공부 및 문제 풀이
- 프로그래머스 문제 풀이
-
-
오늘의 회고 - 인프런 DataBase 강의 수강 - CREATE TABLE name 으로 테이블 생성 가능하다. 괄호안의 숫자는 몇 글자까지인지, NOT NULL은 값이 꼭 필요하기 때문에, AUTO_INCREMENT는 중복을 피하기 위해 행의 추가 시 자동으로 1씩 증가, PRIMARY KEY는 중복을 방지한다.
- 테이블을 생성하고, 그 테이블이 제대로 만들어 졌는지 확인했다. ![image](https://user-images.githubusercontent.com/34560965/105171663-dd701e80-5b61-11eb-9119-9ff0438e8b3c.png) - DFS/BFS 알고리즘 문제 : 프로그래머스 LEVEL 3(네트워크) - DFS/BFS 알고리즘 : DFS는 깊이 우선 탐색으로, 루트 노드 혹은 임의의 노드로부터 시작해 다음 분기로 넘어가기 전 현재 분기를 완벽하게 탐색하는 방법이고, BFS는 루트 노드 혹은 임의의 노드로부터 시작해 인접한 노드를 먼저 탐색하는 방법이다. ![image](https://user-images.githubusercontent.com/34560965/105178409-56c03f00-5b6b-11eb-93d3-d80cfd82626e.png) **-해결 방법** : - visited라는 방문하였는지의 여부를 나타내는 배열을 만들어 반복문으로 computers vector를 돌며 아직 방문하지 않았고, dfs한 결과가 참일 때 answer의 값을 증가시키는 방법으로 문제를 해결하였다. dfs에서는 이미 방문한 컴퓨터라면 false를 반환하고, 방문하지 않았다면 방문했다고 변경 후 다른 컴퓨터와 연결되어 있을 때 재귀 호출로 dfs를 다시 수행하였다. dfs를 완료하면 true를 반환하도록 하였다. - 코드 ``` #include <string> #include <vector> using namespace std; bool visited[200]; bool dfs(int n, vector<vector<int>> computers){ if(visited[n]) return false; //이미 방문한 컴퓨터라면 false 반환 visited[n] = true; //방문했다고 변경 for(int i = 0; i< computers.size(); i++){ if(computers[n][i] == 1 && n!=i){ //연결되어 있을 때 dfs 반복 dfs(i, computers); } } return true; //dfs 완료되면 true 반환 } int solution(int n, vector<vector<int>> computers) { int answer = 0; for(int i = 0; i<n; i++){ if(!visited[i] && dfs(i, computers)){ //아직 방문하지 않았고, dfs의 결과가 참일 때 answer++; //answer 증가 } } return answer; } ```