나는 알고리즘 문제를 풀 때 종이가 꼭 필요하다. 4문제가 있는 코딩테스트 시험에서 A4 빈 종이를 1장만 사용할 수 있다면 반으로 접어 양면을 모두 사용하는 편이다. 문제에서 주어진 것들을 나만의 방식으로 간단하게 종이에 메모하며 문제를 확실히 익힌다. 그리고선 문제에서 주어진 예제를 직접 문제방식대로 풀어본 후 예제 설명과 비교하며 문제 로직을 고안한다.
근데 이번 문제는 Level 3임에도 불구하고 사전에 로직을 생각하지도 않았는데 바로 코드를 작성할 수 있었다. 한번에 정답을 맞췄고 코드를 작성하는데 5분도 채 걸리지 않았다. 과연 이게 Level 3의 문제인가 .... Level 2에 훨씬 어려운 문제가 더 많은 거 같다 ㅎㅎ...
프로그래머스 <네트워크> 문제 보기
https://school.programmers.co.kr/learn/courses/30/lessons/43162
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
프로그래머스 <네트워크> 문제 풀이
class Solution {
static boolean[] visited;
public int solution(int n, int[][] computers) {
int answer = 0;
visited = new boolean[n];
for(int i=0; i<n; i++){
if(!visited[i]){
answer++;
dfs(i, computers);
}
}
return answer;
}
public void dfs(int x, int[][] arr){
visited[x] = true;
for(int i=0; i<arr.length; i++){
if(!visited[i] && arr[x][i] == 1){
dfs(i, arr);
}
}
}
}
- visited는 노드 방문 여부를 체크하는 boolean형 배열
- for 반복문을 통해 모든 노드를 탐색
- 방문하지 않은 노드일 경우에는 dfs 메소드로 넘어감
- visited를 true로 설정해준 후 네트워크 연결 정보가 담긴 computers 배열을 탐색
- 방문한 적 없는 노드이면서 computers 배열 값이 1이라 연결되어 있다면 dfs 메소드로 넘어감
- 해당 로직을 통해 네트워크 개수를 answer++을 통해 파악할 수 있음
오늘은 아침 6시에 일어나서 학교 앞 전망 좋은 카페에 왔는데 6시 40분이었다. 오픈이 7시라 20분 정도 학교 벤치에 가만히 앉아있었는데 바람도 선선하게 불고 해도 없어서 여유롭고 쾌적하게 시간을 보낼 수 있었다. 아침형 인간이 된다는 것은 참 힘들지만 누구보다 오전 시간을 부지런하게 사용할 수 있어서 좋은 것 같다. 물론 난 아침형 인간이 아니기 때문에 그러한 사람이 되기 위해 노력하는 중 !! 어제보다 더 나은 내일의 나가 될 수 있도록 노력하자 :)
'알고리즘 공부 > 코딩테스트(프로그래머스)' 카테고리의 다른 글
[프로그래머스 Level 3] 이중우선순위큐 (Java 자바) (0) | 2023.09.11 |
---|---|
[프로그래머스 Level 1] 삼총사 (Java 자바) (0) | 2023.06.21 |
[프로그래머스 Level 1] 시저 암호 (Java 자바) (0) | 2023.06.19 |
[프로그래머스 Level 1] 과일 장수 (Java 자바) 풀이 방법 (0) | 2023.03.29 |
[프로그래머스 Level 2] 디펜스 게임 (Python 파이썬) 풀이 방법 (0) | 2023.01.19 |