전체 글 58

☕️ [JAVA] BufferedReader

항상 백준 문제를 풀면서 입출력에서 시간이 오버가 나면 BufferedReader를 사용해 주어야 했다. 하지만 나는 이 문법을 익히는게 너무 귀찮기도 하고 "아니 어차피 시험 볼 땐 입출력 관리 다 해주잖아~" 하는 마음에 절대 와우지 않고 필요할 대마다 검색해서 썼는데 이럴바엔 정리를 한 번 하고 외우자는 마음에 정리해본다. 선언 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReade..

카테고리 없음 2021.10.20

☕️[JAVA] 문자열

백준 문제를 풀면서 알게 된 자바에서 문자열을 다루는 방법에 대해서 정리해봤습니다. 계속 업데이트가 되는 포스팅 입니다. Split 문자열을 기준에 따라 나눌 수 있는 메소드 입니다. 다만 반환 값은 리스트로 되니 String[]에 담아 주어야 합니다. String s = "hello world" String [] sa = s.split(""). // -> 문자열을 나눈다. for (String s: sa) { System.out.println(s) } 결과: h e l l o w o r l d 문자열 -> 숫자 전환 Integer.paseInt(문자열) 로 문자열을 숫자로 바꿀 수 있습니다. String s = "1111" int a = Integer.paseInt(s) System.out.printl..

카테고리 없음 2021.10.20

⚫️Dotfriends 페이징 기능 쿼리 성능 향상 시키기

Dotfriends의 페이징 기능 성능 테스트를 하던 중 데이터가 100만개를 넘어서면 호출 시간이 3초나 걸리는 문제가 생겼다. 쿼리문 한개에 4초의 시간이 걸린다. 이런 문제를 자각하고 페이징 기능을 쿼리 성능 튜닝에 대해서 알아보았다. 해결 방법은 크게 3가지가 있었다. 1. NO OFFSET으로 페이징 기능 변경 1-1. NO OFFSET 기능으로 변경 후 총 데이터 카운트 쿼리 삭제 2. 서브 쿼리로 변경 NO OFFSET 기능은 상용하기가 어려운게 dotfriends사이트 특성상 원하는 지점으로 빠르게 이동하는 방식이 유저에게 더 편할 것 같기 때문에 NO OFFSET기능으로 변경하기에는 무리가 있었다. 데이터가 1억건이 넘아가게 되면 카운트 쿼리에서도 성능이 저하 되므로 카운트 쿼리를 안사용..

DotFriends 2021.10.16

☕️ [JAVA] 병합 정렬

자바로 병합정렬 알고리즘을 구현해 보았습니다. 병합정렬이란 배열을 받아서 배열을 나눌 수 있을 때 까지 반으로 쪼개고 쪼갤 수 없을 때 하나씩 대 소를 비교해서 병합하는 정렬 알고리즘입니다. 정렬 시간복잡도는 (nlogn)입니다. 병합 정렬에서는 재귀용법이 사용되어서 머리가 빠개질수도 있지만 찬찬히 살펴보면 크게 어렵지 않습니다. https://visualgo.net/en/sorting VisuAlgo - Sorting (Bubble, Selection, Insertion, Merge, Quick, Counting, Radix) VisuAlgo is free of charge for Computer Science community on earth. If you like VisuAlgo, the only ..

자바 알고리즘 2021.10.14

☕️ [JAVA] 우선순위 큐 (Priority Queue)

이번에는 자바의 Priority Queue의 사용법을 알아보겠습니다. Priority Queue는 조건을 통해 최소 힙 최대 힙 자료구조로 선언할 수 있습니다. 아래 블로그 글을 참고히여 약간의 수정과 요약을 정리했습니다. https://coding-factory.tistory.com/603 [Java] PriorityQueue(우선순위 큐) 클래스 사용법 & 예제 총정리 우선순위 큐(Priority Queue)란? 일반적으로 큐는 데이터를 일시적으로 쌓아두기 위한 자료구조로 스택과는 다르게 FIFO(First In First Out)의 구조 즉 먼저 들어온 데이터가 먼저 나가는 구조를 가집니다 coding-factory.tistory.com Priority Queue 선언 import java.util..

자바 자료구조 2021.10.12

☕️ [JAVA] HashMap

이번에는 자바의 HaspMap에 대해서 알아보겠습니다. 해시 자료구조를 익힐 때 정말 어렵게 익혔는데 파이썬의 딕셔너리가 해시자료구조라는 사실에 약간의 허탈함을 느꼈습니다. 어쨋든! 이제 자바에서 key, value형태의 값을 가지는 자료구조 HaspMap에 대해서 알아 보겠습니다. https://coding-factory.tistory.com/556 [Java] 자바 HashMap 사용법 & 예제 총정리 HashMap 이란? HashMap은 Map 인터페이스를 구현한 대표적인 Map 컬렉션입니다. Map 인터페이스를 상속하고 있기에 Map의 성질을 그대로 가지고 있습니다. Map은 키와 값으로 구성된 Entry객체를 저장하는 coding-factory.tistory.com 위 블로그 포스팅을 보고 약간..

자바 자료구조 2021.10.12

☕️ [JAVA] LinkedList

자료구조 공부를 하면서 LinkedList를 구현해 보았습니다. https://kingofsiliconvalley.tistory.com/33 ☕️ [JAVA] 연결 리스트 구현 자바로 연결리스트 자료구조를 구현해보겠습니다. 생성자 public class DoubleLinkedList { public Node head = null; public class Node { T data; Node next = null; public Node(T data){ this.data = data; }.. kingofsiliconvalley.tistory.com 직접 구현해 봄으로써 화이트보드 코딩으로 연결리스트를 구현해보라고 하면 자신있게 구현 할 수 있지만 IDE를 사용 못하는 환경에서 코딩테스트를 볼 경우 연결리스트를..

자바 자료구조 2021.10.12

☕️ [JAVA] ArrayList

자바의 배열은 길이 값이 고정되어있으므로 여러모로 불편합니다. 뱌열을 선언할 때 길이를 정해주어야 하기도 하고 정해진 길이 보다 더 많은 데이터를 담으려면 배열의 크기를 늘려주기도 해야하므로 여러모로 상당히 귀찮습니다. 첫 프로그래밍언어로 파이썬을 배운 저는 배열의 길이를 정한다는 개념이 없어서 좀 혼란스웠습니다. 그래서 자바에서도 파이썬의 리스트 처럼 사용할 수 있는 ArrayList에 대한 정리를 해보겠습니다. import import java.util.ArrayList; ArrayList 선언 ArrayList list = new ArrayList();//타입 미설정 Object로 선언된다. ArrayList members = new ArrayList();//타입설정 Student객체만 사용가능 A..

자바 자료구조 2021.10.12