목록코딩테스트/백준 (15)
Jam's story

package backjoon; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Tree1 { public static void main(String[] args) throws IOException { BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); int T=Integer.parseInt(br.readLine()); //테스트케이스 변수 for (int k = 0; k < T; k++) { int count=0; int N=..
StringTokenizer은 입력받은 문자열을 구분자(delimiter)를 기준으로 분리하는 역할을 합니다. 이때, 구분자로는 공백이 사용되었습니다. StringTokenizer(a,b) 예) StringTokenizer(input, ",;") 구분자를 변경하고 싶다면 StringTokenizer의 생성자의 두 번째 인자로 사용할 구분자를 지정해주면 됩니다. 구분자로 여러 개의 문자를 사용하려면 구분자 문자열에 해당 문자들을 모두 포함시키면 됩니다.

BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); System.in : 입력 데이터를 받음 InputStreamReader : 바이트를 문자스트림으로 저장 (Reader가 붙게되면서 byte에서 Char로 ) BufferedReader : \n전까지의 문자열을 받음

트리란? 무방향이면서 사이클이 없는 연결 그래프 V개의 정점을 가지고 V-1개의 간선을 가진다 BFS Breadth First Search (너비 우선 탐색 ) 자신의 자식들을 전부 큐에 넣기 = 부모만 저장하고 있으면 된다. -> Queue 사용 DFS Depth First Search (깊이 우선 탐색 ) 1개만 부모이고 나머지는 전부 자식 일단 갈 수 있는 곳 까지 쭉쭉 들어가다가 더 이상 갈 수 없으면 돌아나와 다른 곳 -> Stack 사용

max값인 이유는, 그 경로를 사용하면서 그 만큼의 힘을 사용을 한 것이기 때문에 경로를 사용하면서 제일 큰 값을 구해주고 min값인 이유는, 목표치에 도달한 경로의 힘들마다 최솟값을 구해주는 것 i=3 i=4 i=5 우선 돌의 수를 입력받는다. 돌의 수만큼 그 돌에 부여된 값을 arr 배열에 입력받는다. sum은 그 돌까지 가는데에 필요한 힘 N+1로 한 이유는 인덱스를 1부터 시작하기 위함 i>j 첫번째 돌은 움직이지 않으니, 0 목표값 i-> sum[i]=에 long의 최댓값을 넣어준다. for-j 마지막줄에서, 최종 경로 힘중, min(최솟값)을 계산하기 때문에 , 제일 큰 값을 넣어줘도 괜찮다. j=1에서 바로 없어짐 for-j 에서는 i가 목표값이고, j가 i를 향해 가는 것인데, j=3이라고..

package 그래프탐색; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.Collections; import java.util.LinkedList; import java.util.Queue; import java.util.StringTokenizer; public class B1260 { static int N, M, V; static boolean[] visited; static ArrayList[] list; public static void main(String[] args) throws IOExcep..

원래는 이렇게 생각했었다가 ,4,5가 제일 많이 호출되기 때문에 실패 화살표 방향을 원래대로 . cnt배열을 static 으로 선언하여, 어떤 노드에 가장 많이 방문하는지로 N은 컴퓨터 갯수, M은 간선의 수 모든 배열들을 , 1로 시작하는 컴퓨터 숫자와 동일하게 사용하기 위해 선언시 갯수+1로 선언 static 으로 cnt 선언 => 각 노드에 몇번을 방문했는지 알게해주는 배열 ArrayList con에 A번째마다 각각 신뢰하는 B들을 넣어주기 A가 B를 신뢰한다 -> con[A] -> B B B B 이제 for문으로 con ArrayList을 돌게되는데, visited는 con을 돌때마다 초기화를 해줘야 한다. 안그러면 모두가 true로 설정되어있어서 더이상 돌 수 없으니 con[1] con[2]는 ..
📌입력값에 띄어쓰기가 없기때문에 StringTokenizer가 아닌 charAt 사용하기 📌한줄입력받은 String input에 int형 변수= input.charAt(j)-' 0' Integer.parseInt(input.charAt(j)+"") dfs 사용 package days01; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.util.ArrayList; import java.util.Collections; import java.util.It..