본문 바로가기

Java78

[JAVA] 촌수 계산 (백준 2644) dfs,bfs 문제가 제일 재밌는거 같다. 출발지와 목적지를 정하고 가는 데 몇군데를 거치느냐를 따지면 된다. 예를 들어, 7번 목적지에서 3번으로 갈려면? 최소 3번만에 갈 수있다. dfs로 위의 로직을 구현한다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.*; public class Main{ static int n; static int st,ed; static int answer=-1; public static void main(String[] args) throws IOException{ FastScanner fs = new FastScanner.. 2020. 8. 14.
[JAVA] 맥주 마시면서 걸어가기 (백준 9205) 풀이) 맥주는 20병 들고 있고 50미터마다 1병씩 소모된다면 한번에 이동할 수 있는 최대 거리는 1000이다. 그래서 거리가 1000이하인 노드들을 모두 방문해 보면서 그곳이 도착지점인지만 확인하면 된다. 위와 같이 지도가 있을 때 1000 보다 큰 간선은 제거해준다. 그러면 이제 bfs로 탐색해서 도착지에 도착할 수있는지 점검하면 된다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.*; public class Main{ static int testCase,storeCnt; static Pos[] posList; public static void mai.. 2020. 8. 13.
객체 배열 초기화할때 주의점 (NullpointerException Error) Node[] nodes = new Node[100]; for(int i=0;i 2020. 8. 13.
[JAVA] 바이러스 (백준 2606) 객체 배열로 한번 풀어봤다. 객체배열은 초기화를 따로 해줘야하는 것을 잊지말자... bfs 로직은 심플하다. 1. queue에 node가 있다면 node를 queue에서 꺼낸다. 없다면 종료한다. 2. node 의 방문여부를 체크하고 방문한 적 있다면 1번으로 간다. 3. 방문한적이 없다면 방문체크를 하고 answer를 1증가한다. 4. 나와 연결된 모든 node를 queue에 넣고 1번으로 간다. import java.util.*; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.LinkedList; import java.util.StringTokenize.. 2020. 8. 13.
2D Array를 stream으로 만들기 // arr is 2D Arrays.stream(arr).flatMapToInt(Arrays::stream) 2020. 8. 12.
[JAVA] 로봇 청소기 (백준 14503) 자바 스트림을 좀 활용하고 싶은데 맘처럼 잘 안된다. 스트림을 잘 활용하면 정말 편하게 풀수 있을거 같은데.. 알고리즘을 다 주어줬기 때문에 구현만 하면 된다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; import java.util.StringTokenizer; import static java.lang.System.*; public class Main{ static int n,m; static final int[][] d4 = {{-1,0},{0,1},{1,0},{0,-1}}; public static void main(String[].. 2020. 8. 12.
[JAVA] 미로탐색 (백준 2178) 유튜버 SecondThread 님이 자주 쓰시는 fastScanner를 연습하고자 bfs 문제중에 가장 기본중의 기본을 풀어보았다. 나중에 bfs 로 접근할 일이 있으면 템플릿으로 써도 될듯 하다. import java.io.*; import java.util.*; import static java.lang.System.*; public class Main { private static int n,m; private static final int[][] d4 = {{1,0},{0,1},{-1,0},{0,-1}}; public static void main(String[] args) throws IOException { FastScanner fs = new FastScanner(); n= fs.nextIn.. 2020. 8. 12.
[JAVA] 괄호 추가하기 (백준 16637) 아직까지 문자하나하나 다루는 거랑 알고리즘 할때, 컬렉션을 다루는 스킬이 많이 부족함을 느낀다. 매일 하나씩 풀다보면 적응 되겠지... dfs로 간단하게 풀수있다. a + b - c 가 있다면 1) a+b 하고 넘기기 2) a+ (b-c) 하고 넘기기 그림으로 설명하면 아래와 같다. import java.io.*; import java.util.*; public class Main { static int n; static int answer = -(int)Math.pow(2,31); static ArrayList nums = new ArrayList(); static ArrayList ops = new ArrayList(); public static int cal(int a,int b,char op){ .. 2020. 8. 10.
[JAVA] 괄호변환 (kakao 2020) 위 문제는 알고리즘을 다 제공하였다. 그대로 구현만 하면 되는 아주 심플한 문제다. 여기서 String 을 자바로 어떻게 다룰 것인지가 문제인데 예를 들어 String p = "maple Story" 라는 String 이 있을 때, 각각의 char에 접근하는 방법은 몇가지 있는데 1. charAt으로 접근하는 방법 for(int i=0;i 2020. 7. 31.