반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- dart
- 알고리즘
- 앱아이콘 변경
- 플러터 동작
- Lazy
- Java
- 에러
- Singleton
- 싱글톤
- 초기화
- 완전탐색
- 비동기 처리
- 자바
- 프리즈드
- element tree
- 자료구조
- Kotlin
- flutter
- zwj
- 코틀린
- IOS
- Widget Tree
- 프로그래머스
- 플러터
- dfs
- Render object tree
- 거리알고리즘
- 재귀
- Android
- linebreak
Archives
- Today
- Total
모바일 개발하는 자바리안의 메모장
자바(JAVA) - 모두 0으로 만들기(Programmers : 76503) 본문
반응형
https://programmers.co.kr/learn/courses/30/lessons/76503
생각했던것보다 아주 많이,, 오래 걸린 문제.
가중치를 어떻게 올바르게 카운트 할 수 있을지 너무 어렵게 생각했던 것 같다..
반환값이 long인 부분을 고려하여 입력값을 long 타입으로 옮겨주는 작업,
그리고 아직도 왜 그런지 모르겠지만 변수화 여부에 따라 결과값이 다르게 나오던 문제를 해결하고나서야 겨우 All Pass를 받을 수 있었다..
실행 순서는 다음과 같다 :
1. int[] a > long 타입 배열에 입력
2. 모든 weight를 더하여 0이 아닌 경우 -1 반환
3. 간선 정보 ArrayList 배열에 입력
4. DFS를 통해 각 가중치 업데이트하며 + 업데이트된 가중치 Count
<코드>
import java.util.*;
class Solution {
long answer = 0;
ArrayList<Integer>[] adjList;
int len;
boolean[] visited;
long[] longAns;
public long solution(int[] a, int[][] edges) {
this.len = a.length;
this.adjList = new ArrayList[this.len];
this.visited = new boolean[this.len];
this.longAns = new long[this.len];
long s = 0;
for (int i = 0; i < this.len; i++) {
this.longAns[i] = a[i];
s += a[i];
this.adjList[i] = new ArrayList<Integer>();
}
// input 유효성 확인 - 전체 합이 0이 아닐 경우 불가능
if (s != 0) {
return -1;
}
// 간선 정보 adjList 에 입력
for (int[] edge : edges) {
int node1 = edge[0];
int node2 = edge[1];
this.adjList[node1].add(node2);
this.adjList[node2].add(node1);
}
dfs(0);
return answer;
}
public long dfs(int index) {
this.visited[index] = true;
// 간선 노드를 확인하며 가중치 업데이트
for (int i = 0; i < this.adjList[index].size(); i++) {
int curr = this.adjList[index].get(i);
if (visited[curr] == false) {
this.longAns[index] += dfs(curr);
}
}
this.answer += Math.abs(longAns[index]);
return longAns[index];
}
}
반응형
'Java > Java.algorithm' 카테고리의 다른 글
자바(JAVA) - 크레인 인형뽑기 게임(Programmers : 64061) (0) | 2021.06.10 |
---|---|
자바(JAVA) - 타겟 넘버(Programmers : 43165) (0) | 2021.06.10 |
자바(JAVA) - 게임 맵 최단거리(Programmers : 1844) (0) | 2021.06.10 |
자바(JAVA) - 모의고사(Programmers : 42840) (0) | 2021.06.10 |
자바(JAVA) - 가장 큰 수(Programmers : 42746) (0) | 2021.06.10 |
Comments