차곡차곡 성 쌓기
자바 코딩 테스트 필수 자료구조
알고리즘 2025. 1. 28. 21:12

자바 자료구조 문법큐Queue que = new LinkedList();// 꺼내기, 없어짐int cur = que.poll();// 꺼내기, 안없어짐int cur = que.peek();// 넣기que.add(cur);우선순위 큐PriorityQueue que = new PriorityQueue();// 꺼내기, 없어짐int cur = que.poll();// 꺼내기, 안없어짐int cur = que.peek();// 넣기que.add(cur);스택Stack stack = new Stack();// 꺼내기, 없어짐int cur = stack.pop();// 넣기stack.add(cur);리스트List list = new ArrayList();// 맨 뒤에 1 삽입list.add(1);// 2 자리에 3..

article thumbnail
[Java] String의 split() 메소드 뜯어보기
CS/자바 2025. 1. 19. 20:19

코테를 풀다가 split()의 내부를 몰라 시간복잡도를 구할 수 없어서 공부해보고자 한다. 1. 호출String [] str = br.readLine().split("/");코드 작성 후 실행 후 "10/20/30/40"을 입력한다. 2. String의 split() 실행public String[] split(String regex) { return split(regex, 0);} 3. 구분자 포함여부가 있는 split() 실행private String[] split(String regex, int limit, boolean withDelimiters) { /* fastpath if the regex is a * (1) one-char String and this character is..

article thumbnail
[백준]다각형의 면적 2166 - JAVA
알고리즘/백준 2024. 12. 8. 22:50

1. 문제  2. 접근다각형은 삼각형으로 구성되니깐 한 점을 고정 시킨 다음 두 점을 이동시켜서 삼각형의 넓이를 구해주면 되겠구나 했다.근데 계속해도 틀렸다고 나오길래 포기했다. 나는 처음 들어보는 신발끈 공식을 이용하는 풀이였다. 삼각형은 왜 안되나 봤더니 아래그림에서 점 P2, P3, P4으로 삼각형의 넓이 공식을 적용하면 제대로 된 넓이를 구할 수 없었다.  신발끈 공식은 시계 반대(정) 방향으로 돌면서 두 점을 정해 각 x, y를 곱해주어서 빼준다. 이때 마지막 점은 다시 첫 점으로 돌아와야 한다.코드로 구현하면 다음과 같다.for(int i=0; i 이때 중요한 점은 sum에다가 값을 더할 때 절대값으로 붙이면 안되는 것이다. 다 더한 다음에 결과에 절대값을 붙여야한다. 부호가 다른 것도 다 적..

article thumbnail
[Java] 제네릭 - Generic
CS/자바 2024. 12. 3. 19:53

처음 자바를 배울 때는 제네릭이 이렇게 중요한 줄 몰랐는데 개발을 할 수록 제네릭 개념이 많이나와서 정리해보고자 한다. 해당 글은 인프런의 '김영한의 실전 자바 - 중급 2편'을 참고했다. 제네릭이 필요한 이유왜 제네릭을 많이 사용할까? 사실 나는 개발할 때 많이 사용하지 않는다. 하지만 사용하고 있는 라이브러리 코드들을 확인해보면 T나 K가 사용되고 있는 코드들이 많았다. 많이 사용하는 이유 중 하나는 `코드의 재사용`이다. 코드의 재사용제네릭을 사용하면 StringBox이든, IntegerBox이든 객체마다 새로운 클래스를 만들지 않고도 단 하나의 클래스만으로 여러 개의 클래스를 지원할 수 있게 된다.public class GenericBox { private T value; pub..

article thumbnail
[백준] 고냥이 16472 - JAVA
알고리즘/백준 2024. 12. 3. 00:49

1. 문제  2. 접근이 문제는 알파벳 N개를 사용해서 최대 연속된 문자열의 길이를 구하는 것이다. 처음에 N이 2로 고정된 줄 알고 완탐 돌릴려고 했는데 1부터 26까지 주어지는 것이었다. 그래서 생각한 아이디어는 set과 투 포인터를 이용한 풀이었다. 중복이 허용되지 않는 set으로 알파벳을 저장하고 set의 사이즈가 N을 넘어가면 사이즈가 N이 될 때가지 빼주면 되겠구나 했다.  하지만 'cacc' 처럼 c가 연속적으로 나오지 않는 경우를 고려하지 못한 풀이였다. 단순히 c를 만나면 다음 문자열이 c가 아닐 때까지 빼주고 c를 set에서 삭제했더니 a 뒤에 나오는 cc를 삭제하지 않고 있었다. 그래서 `HashMap`을 이용해서 카운팅한 문자의 카운트를 저장하고, 값이 0이 될 때 map에서 삭제해..