파이썬으로 공부하다가 큰맘먹고 신청한 인생 첫 코테가 자바만 된다니 ㅋㅋㅋㅋㅋㅋㅋ
하..... 진짜 하나도 안웃김
급하니까 중요한 부분만 자바로 옮겨보는 연습을 했다.
일단 기본 문법은 다른사람이 정리해둔거 참고
❗❗❗맨 위에
import java.util.*;
꼭꼭꼭꼭 붙이기❗❗❗
import java.util.*;
class Solution {
int N = 9; // 편의상 사용 (노드개수+1을 의미)
// graph와 visited는 매개변수로 안넘기고 이렇게 밖에서 선언해서 아무데서나 접근
ArrayList<ArrayList<Integer>> graph = new ArrayList<>(); // 인접리스트
boolean[] visited = new boolean[N]; // 단순배열
public String solution(String rny_string) {
String answer = "";
// 그래프 만들기
for(int i=0;i<N;i++) {
graph.add(new ArrayList<>()); // 내부 ArrayList 할당
}
graph.get(1).add(2); // graph[1].append(2)와 동일
graph.get(2).add(1); // 이후 나머지는 생략
// visited 초기화
for(int i=0;i<N;i++) {
visited[i] = false; // False 아니고 false
}
// 1부터 시작
dfs(1);
return answer;
}
public void dfs(int v) { // 매개변수로 현재노드만 받아옴
System.out.println(v); // 이후 로직은 동일
visited[v] = true;
for (Integer nextNode : graph.get(v)) {
if (visited[nextNode] == false){
dfs(nextNode);
}
}
}
}
import java.util.*;
class Solution {
int N = 9;
ArrayList<ArrayList<Integer>> graph = new ArrayList<>();
boolean[] visited = new boolean[N];
public String solution(String rny_string) {
String answer = "";
// 그래프 만들기, visited 초기화 부분은 위에 쓴 DFS와 동일
// 1부터 시작, 로직은 동일
Queue<Integer> queue = new LinkedList<>();
queue.offer(1);
visited[1] = true;
int now = 0;
while (!queue.isEmpty()) {
now = queue.poll();
System.out.println(now);
for(Integer next : graph.get(now)) {
if (visited[next] == false) {
queue.offer(next);
visited[next] = true;
}
}
}
return answer;
}
}
행과 열의 길이를 둘다 확실히 알고 그 길이가 고정일때만 사용
int n = 5;
int[][] graph = new int[n + 1][n + 1];
행의 수는 고정인데 열의 수가 가변일 때 사용 가능
ArrayList<Integer>[] list = new ArrayList[n + 1];
for (int i = 0; i <= n; i++) {
list[i] = new ArrayList<>();
}
for(int[] edge : edges) {
list[edge[0]].add(edge[1]);
list[edge[1]].add(edge[0]);
}
행과 열 모두 모를 때도 사용 가능
ArrayList<ArrayList<Integer>> graph = new ArrayList<>();
for (int i = 0; i <= n; i++) {
graph.add(new ArrayList<>());
}
graph.get(n1).add(n2);
String str = "my string"
for (String s : str.split("")) {
Sytem.out.println(s);
}
for (int i=0;i<str.length();i++) { // <- 이 방법이 더 좋은듯 (빠름)
Sytem.out.println(str.charAt(i));
}
length
length()
size()
int[] array = new int[7];
System.out.println(array.length); // 7
String str = "string";
System.out.println(str.length()); // 6
ArrayList<Object> list = new ArrayList<Object>();
System.out.println(list.size()); // 0
array[인덱스]
array[인덱스]=값
list.get(인덱스)
list.add(값)
int[] array = new int[7];
array[0]; // 접근
array[0] = 0; // 추가
List<Integer> list = new ArrayList<>();
list.get(0); // 접근
list.add(0); // 추가
class Solution {
boolean[] visited; // 전역변수 선언해두고
void dfs(int[][] graph, int v) { // 굳이 public 안써도 되는듯
// ...
}
public int solution(int n, int[][] computers) {
visited = new boolean[n]; // 여기서 할당
// ...
}
}
변수선언이나 자료형변환 이런것만 잘 어찌저찌하면 알고리즘 자체는 똑같긴하다..