본문 바로가기

알고리즘8

[백준 9613번] GCD의 공식은 외워둘 것 GCD는 최대공약수를 구하는 공식입니다. 이것은 어느정도 외워두는게 좋다고 생각합니다. public static int gcd(int a, int b) { if(b == 0) return a; return gcd(b, a % b); } 두 약수에 대한 공식은 위와 같습니다. 백준 9613번 문제를 통해서 응용할 수 있습니다. https://www.acmicpc.net/problem/9613 9613번: GCD 합 첫째 줄에 테스트 케이스의 개수 t (1 ≤ t ≤ 100)이 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있다. 각 테스트 케이스는 수의 개수 n (1 < n ≤ 100)가 주어지고, 다음에는 n개의 수가 주어진 www.acmicpc.net 저의 풀이입니다. import java.io.Bu.. 2022. 3. 15.
[백준 17413번] 스택으로.. 단어 뒤집기가 되다니 그저 스택은 접시처럼 위에 쌓고 빼고하는 줄로만 알았다. 최신의 데이터를 얻고싶으면 스택을 사용하라! 이론적으로만 알고있었는데.. 생각해보니 단어 뒤집기에도 사용할 수 있었던 것! https://www.acmicpc.net/problem/17413 나의 풀이다. public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String[] arr = br.readLine().split(""); Stack stack = new Stack(); StringBuilder sb = new StringB.. 2022. 3. 14.
[백준 1158번] Queue가 원형 리스트로 풀 수도 있구나! 백준 1158 문제 요세푸스를 푸는데... 처음에 LinkedList를 풀면서 add와 remove를 연속으로 하는 도중... https://www.acmicpc.net/problem/1158 1158번: 요세푸스 문제 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000) www.acmicpc.net 나름 생각한 LinkedList였다. 중간에 데이터 추가 삭제가 코스트가 안들 것이라 생각이 들어서 사용했지만 로직만 어려워질뿐.. 결국 답지를 보았다.. 큐가 있었던 것! 큐를 빼고 마지막에 넣으면 원형 구조가 된다는 것이다. 너무 놀랐다! 나의 풀이다. import java.io.*; import java.util.*; public class Main { pu.. 2022. 3. 14.
ArrayList와 LinkedList 정말 많이 쓰는 녀석이지만... 정말 업무에서 오히려 많이 쓰는 Collections 구조는 ArrayList이다. 배열은 초기화 시점에 미리 크기가 정해져 나중에 변수를 복사하지 않는 이상 크기를 바꾸기 힘들다. 그래서 주로 만만한 ArrayList를 사용했던 것 같다. 근데... 알고리즘 단계에서는 List 인터페이스를 상속받은 클래스라는 것만 빼고는 활용할 줄 모른다. 그래서 자세히 넘겨보자는 취지하에 글을 써본다. ArrayList - List 인터페이스 상속 받은 클래스 - 크기가 가변적 - 순차 리스트 - 인덱스로 내부 객체 관리한다는 점 - 중간에 인덱스 객체를 Insert하게 되면 마지막 인덱스까지 1씩 밀려나 데이터가 클수록 악영향을 미친다. - 중간에 데이터 Insert가 많다면 LinkedList 활용하는 방법 Li.. 2022. 3. 13.