본문 바로가기

algorithm68

[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.
[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.
[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.
[PYTHON] 삼성 기출 풀이 모음 & 역량테스트 합격 후기 https://github.com/hangeulisbest/samsung_algorithm hangeulisbest/samsung_algorithm 삼성 기출 알고리즘 파이썬 풀이 모음. Contribute to hangeulisbest/samsung_algorithm development by creating an account on GitHub. github.com 위 문제를 모두 풀어보고 삼성 SW역량테스트를 통과하였다. 29문제 정도 풀면서 느낀점은 문제 대부분이 구현문제라서 대비하면서 구현실력이 증가한거 같다. 디피문제처럼 아이디어를 요구하는 문제는 나오지 않는것 같다. 또한 시뮬레이션 문제가 많아서 bfs,dfs 문제를 연습하기가 좋다. 2020. 8. 9.
[JAVA / PYTHON] 연구소 3 (백준 17142) - 삼성기출 자바로 bfs,dfs 문제를 풀어본적이 없어서 간단한 bfs 문제를 풀어보려고 시도했다. 이전에 삼성 sw 역량테스트를 준비하면서 파이썬으로 쉽게 풀었지만 이제는 자바에 익숙해 지고 싶어서 자바로 풀어보았다. 자바로 풀면서 놀랐던것은 왜 순열과 조합과 관련한 라이브러리가 없는 걸까... 물론 분명히 있을거 같은데 본인이 못찾는 것일 수도 있다. 귀찮지만 직접 조합을 구현했다. 조합은 dfs로 구현하였다. 문제를 푸는 알고리즘은 그림으로 표현하겠다. 위와 같은 연구소 배열이 있다고 하자. 값이 2인것은 바이러스가 놓일 수 있는 위치다. 바이러스가 놓인 위치가 아니다. 이 중에서 2개를 활성화 한다고 하면 활성화 한곳은 0 으로 바꾸고 visited 에서 해당위치에 1로 바꿔준다. 또한 비활성화한 곳은 -1.. 2020. 8. 1.
[JAVA] 괄호변환 (kakao 2020) 위 문제는 알고리즘을 다 제공하였다. 그대로 구현만 하면 되는 아주 심플한 문제다. 여기서 String 을 자바로 어떻게 다룰 것인지가 문제인데 예를 들어 String p = "maple Story" 라는 String 이 있을 때, 각각의 char에 접근하는 방법은 몇가지 있는데 1. charAt으로 접근하는 방법 for(int i=0;i 2020. 7. 31.