-
[프로그래머스] 전력망을 둘로 나누기 (BFS)코테/프로그래머스 2023. 2. 24. 11:31
https://school.programmers.co.kr/learn/courses/30/lessons/86971
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
전선 하나를 끊어 전력망을 2개로 나눴을때
각 전전력망의 개수 차의 최솟값을 구하라
주어진 wires 배열의 값중 하나를 의미 없는 값으로 바꾸고 모든 경우에 bfs 탐색을 수행
1번 송전탑 + 연결된 탑의 개수 N을 구하고
N과 (전체 전력망 개수)-N의 차가 최소가 될때 그 값을 return 한다
int solution(int n, vector<vector<int>> wires) { int answer = 999; for(int t=0 ; t<wires.size() ; t++){ w=wires; w[t]={0,0};
w 벡터에 wires를 복사하고 임의의 값 하나를 {0,0}으로 변경
queue<int> q; q.push(1); counts=0; for(int tt=0 ; tt<101 ; tt++) visit[tt]=0; visit[1]=1; while(!q.empty()){ counts++; int start = q.front(); cout<<start<<" "; q.pop(); for(int i=0 ; i<wires.size() ; i++){ int w0 = w[i][0]; int w1 = w[i][1]; if(w0==start && visit[w1]!=1){ q.push(w1); visit[w1]=1; } if(w1==start && visit[w0]!=1){ q.push(w0); visit[w0]=1; } } }
각각의 경우에 bfs 탐색을 수행
int a = n-counts; int b = max(counts, n-counts); int c = min(counts, n-counts); int d = b-c; if(d<answer) answer = d; } return answer;
bfs로 구한 한 전력망의 송전탑 개수 counts와
다른 전력망의 개수는 n - counts
둘의 차를 구하고
차의 최소값을 answer에 담아 return하면 끝
#include <string> #include <vector> #include <queue> #include <iostream> #include <algorithm> using namespace std; vector<vector<int>> w; int visit[101]; int counts=0; int solution(int n, vector<vector<int>> wires) { int answer = 999; for(int t=0 ; t<wires.size() ; t++){ w=wires; w[t]={0,0}; queue<int> q; q.push(1); counts=0; for(int tt=0 ; tt<101 ; tt++) visit[tt]=0; visit[1]=1; while(!q.empty()){ counts++; int start = q.front(); cout<<start<<" "; q.pop(); for(int i=0 ; i<wires.size() ; i++){ int w0 = w[i][0]; int w1 = w[i][1]; if(w0==start && visit[w1]!=1){ q.push(w1); visit[w1]=1; } if(w1==start && visit[w0]!=1){ q.push(w0); visit[w0]=1; } } } int a = n-counts; int b = max(counts, n-counts); int c = min(counts, n-counts); int d = b-c; if(d<answer) answer = d; cout<<"->"<<counts<<" answer="<<answer<<"\n"; } return answer; }
전체 코드
'코테 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 피로도 (DFS) (0) 2023.02.24 [프로그래머스] 모음 사전 (DFS) (0) 2023.02.24 [프로그래머스] 소수 찾기 (DFS) (0) 2023.02.24 [프로그래머스] 타겟 넘버 (DFS) (0) 2023.02.24 [프로그래머스] 단어 변환 (BFS) (0) 2023.02.24