CodeingTestPrac/Java Coding Test
코테 연습[자바 코테 준비 11일차] , BFS(2) ,String Join
sung.hyun.1204
2023. 7. 5. 12:18
네트워크 연결 수 파악 문제
https://school.programmers.co.kr/learn/courses/30/lessons/43162
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
1. 연결 된것은 같은 네트워크 그룹이다.
2. 연결이 없는 노드도 네트워크 개수의 포함이 된다.
-> 0 번 커퓨터 부터 n-1 번 컴퓨터까지 bfs 를 적용하여 방문 기록을 체크 해준다.
import java.util.*;
class Solution {
public int solution(int n, int[][] computers) {
boolean[] visited = new boolean[n];
int count = 0 ;
Queue<int[]> q = new LinkedList<>();
for(int i = 0 ;i<n;i++) {
if(visited[i]) continue;
q.offer(computers[i]);
visited[i] = true;
while (!q.isEmpty()){
int[] way = q.poll();
for(int j = 0 ; j < n;j++){
if(way[j] == 1 && !visited[j]){
q.offer(computers[j]);
visited[j] = true;
}
}
}
count++;
}
return count;
}
}
꽤 오래 걸렸다. , 불필요한 추가 적인 메모리나 루프 없이 푸는 것 이 필요하다 라고 느꼈다. -> 코드가 깔끔해진다.
TIL )
answer = participantName.keySet().toString().replace("]","").replace("[","");
answer = String.join("", participantName.keySet());
문자열 배열에서 "이름" 만출력할때
"["이름"]" 에서 힘들게 괄호를 지우지 말고
String 의 Api 에서 join 을 사용하자.
문제 :
https://school.programmers.co.kr/learn/courses/30/lessons/42576
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
public String solution(String[] participant, String[] completion) {
String answer = "Error"; // 완주 s
Map<String,Integer> participantName = new HashMap<>();
for(String name : participant) {
participantName.put(name,participantName.getOrDefault(name,0)+1);
}
for(String name:completion){
int checkNumber = participantName.get(name);
if(checkNumber > 1) {
participantName.put(name,checkNumber - 1);
continue;
}
participantName.remove(name);
}
answer = String.join("", participantName.keySet());
return answer;
}