알고리즘/백준 알고리즘
-
[java] 백준 알고리즘 2504번 괄호의 값 풀이알고리즘/백준 알고리즘 2018. 7. 18. 20:48
이 문제는 스택을 활용해서 푸는 문제다. 괄호를 숫자로 변환해서 스택에 담아두고 총합을 구하는 원리로 풀었다. 예제 같은 경우를 푼 방식을 보자면, '(()[[]])([])' 처음 입력된다. 처음 '('가 오면 스택에 '('를 담는다. 다음도 '(' 이므로 다시 스택에 '('를 담아준다. 여기까지 스택의 모양은 '((' 이다. 다음 ')' 가 온다. 닫혔다는 건 괄호 하나가 완성 됐다라는 뜻이다. 그래서 앞에 왔었던 값을 체크해줘야 하는데, 만약, '()'형태로 앞의 문자가 '(' 였다면 바로 2로 변환해주면 된다. 앞의 문자 '('는 pop을 시켜서 없애준다. 다음은 '(()[[]])([])' 중에서 (()[ 까지 왔다. '['이 올 경우도 '('와 똑같이 처리하고 점수만 다르게 해주면 된다. 열리는 ..
-
[java] 백준 알고리즘 1874번 스택 수열 풀이알고리즘/백준 알고리즘 2018. 7. 11. 16:52
사용하는 객체가 많아 메모리, 시간 둘 다 많이 잡아먹는다. ㅠㅠ 내가 짰지만 소스가 그다지 마음에 들지는 않지만, 일단 문제 해결. * 풀이 소스 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 public class Baekjooon1874{ static StringTokenizer st; public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); ..
-
[java] 백준 알고리즘 10828번 스택 풀이알고리즘/백준 알고리즘 2018. 7. 11. 16:30
스택. 스택에 대한 설명: 스택(위키피디아) 스택은 바닥은 깔끔하게 막혀있고, 사각형 모양의 통에 데이터를 넣는다고 생각하면 된다. 그럼 원하는 데이터를 꺼내려면 위에서부터 꺼낼 수 밖에 없다. 데이터를 넣을 때도 퇴적 작용처럼 위에서 하나하나씩 쌓인다. 이를 First In, Last Out이라 한다. 처음 들어간 것이 가장 마지막에 나온다는 뜻이다. 자바에 있는 Stack 클래스를 활용해 쉽게 구현했다. * 풀이 소스 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 public class Baekjoon10828{ static StringTokenizer st; public static v..
-
[java] 백준 알고리즘 9020번 골드바흐의 추측 풀이알고리즘/백준 알고리즘 2018. 7. 9. 17:10
에라토스테네스의 체를 활용해서 푸는 문제이다. 에라토스테네스는 소수의 배수를 통해서 소수가 아닌 수를 삭제해나가는 것이다. 그리고 삭제되지 않은 수가 소수라는 뜻! 에라토스테네스 체로 먼저 소수를 찾아두고, 입력된 숫자를 반으로 나눈 뒤, 출력될 왼쪽의 수는 -- 하면서 출력될 오른쪽의 수는 ++해준다. 동시에 소수가 나오면 골드바흐의 추측 조건에 만족한다. 그러면 break; * 풀이 소스 12345678910111213141516171819202122232425262728293031323334353637383940414243444546 public class Baekjoon9020{ static StringTokenizer st; public static void main(String[] args) ..
-
[java] 백준 알고리즘 1260번 DFS와 BFS 풀이알고리즘/백준 알고리즘 2018. 7. 9. 16:49
깊이 우선 탐색, 너비 우선 탐색에 대한 문제였다. 이 개념들은 나도 모르던 개념이라 다른 분들의 블로그를 참고해서 구현하고 공부했다. 참고 블로그: DFS, BFS * 풀이 소스 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576public class Baekjoon1260 { private static boolean[] visited; private static int[][] adjacencyMatrix; private static Queue queue; private static int verte..
-
[java] 백준 알고리즘 1929번 소수 구하기 풀이알고리즘/백준 알고리즘 2018. 7. 4. 17:41
소수를 구할 때 해당 숫자의 제곱근 이상으로 나눌 필요가 없다는 공식을 활용해서 소수 구하기를 구현했다. * 풀이 소스 1234567891011121314151617181920212223242526272829303132333435363738 public class Baekjoon1929 { static StringTokenizer st; public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out))..
-
[java] 백준 알고리즘 1181번 단어 정렬 풀이알고리즘/백준 알고리즘 2018. 7. 4. 16:54
이 문제를 풀면서 알게 된 유용한 개념은 HashSet은 중복을 허용하지 않는다! 이다. HashSet을 활용하면 출력 조건에서 '같은 단어가 여러번 입력된 경우에는 한번씩만 출력한다'를 만족시킬 수 있다. 그리고 Arrays.sort 기능에 숫자만 배열 가능한게 아니라 문자도 알파벳 순으로 배열하는 기능도 있다. 추가적으로, Comparator 형식으로 로직을 만들어서 비교할 수도 있다. 이들을 활용하면 풀 수 있다. * 풀이 소스 123456789101112131415161718192021222324252627282930313233343536373839 public class Baekjoon1181{ static StringTokenizer st; public static void main(Strin..