목록Study/닥치는 대로 주워 담기 (109)
일단 씻고 나가자

2023. 03. 24 금요일 - list와 향상된 for문의 관계? : List list ... add(0, 1); add(1,2); 하면 for (int I : list) 했을 때 add된 숫자가 차근차근 나온다. 이는 new HashMap.put(0, list) 하여 int I : get(0) 해도 나온다. - LinkedList 직접 구현 논리? (insert, 추가) : 노드가 되는 Node 클래스를 만들고, 그 Node의 다음을 가리키는 Node next를 만들어둔다. 데이터가 담길 변수 또한 만든다. 해당 Node를 관리할 List 클래스엔 첫 Node를 가리키는 head 변수를 만들고, 매개변수로 데이터를 담고 해당 데이터를 담은 새로운 Node를 만든다. head가 null일 땐 분기하여..
2023. 03. 23 목요일 - [Java] long보다 더 큰 정수를 다루는 방법? 연산 방법? : java.math.BigInteger;을 import하여 사용한다. BigInteger은 기본적으로 문자열을 받아 해당 객체로 다시 저장하는 방식이다. BigInteger bi = new BigInteger(“111”); 따라서 연산 결과도 해당 객체에 저장되는 것이 아닌 새로운 그릇에 담아야 하며, 피연산자도 BigInteger 객체이어야 한다. 연산은 별도 연산자의 이름을 담은 함수에 저장한다. BigInteger bi2 = bi.multiply(new BigInteger(“2”); add, subtract, multiply, divide, remainder(%) 로 사용하며, 해당 값을 기본형으로..

2023. 03. 22 수요일 - [Java] 문자열을 거꾸로 뒤집는 법? : new StringBuffer(string).reverse().toString; 추가로 StringBuilder와 StringBuffer는 서로 생성자로 감싸진다. StringBuffer에는 append() 기능도 있다. - [Java] 이진수 십진수 서로 바꾸는 함수? : Integer.toBinaryString(int); Integer.parseInt(“1000”, 2); - [Java] 스트림에서 특정 A 클래스의 a 메소드를 사용하는 문자? : .map( A :: a ) - [Java] Integer ArrayList를 스트림을 사용하여 int 배열로 바꾸는 방법? : new ArrayList(Arrays.toList(..

2023. 03. 21 화요일 - 약수, 최대 공약수, 최소 공배수를 코드로 구하는 방법? 약수 // for문을 활용한다. 단 범위는 1부터 자신의 1/2까지며, 계산 후 자기 자신 또한 약수에 넣어주어야 한다. 이유는 나눌 수 있는 가장 작은 수가 2인데, (1은 모두 나눠지므로 제외) 자신의 반보다 큰 수는 나눠질 수 없기 때문이다. 예를 들어 10이라면 10 = 2*5 로, 5보다 큰 수가 2보다 더 작은 수를 곱하여 값을 낼 수 없기 때문. 하지만 본 방법은 for문을 모두 돈 후 자기 자신 또한 값에 넣어주어야 한다. 2. 최대 공약수 // 이중 for문을 돌면서, 각 숫자의 약수들 중 겹치는 값을 계속 max 갱신해주면 된다. 유클리드 호제법과 재귀함수를 사용하는 방법이 더 좋다. (추후 설명..
2023. 03. 20 월요일 - 힙이란? 성질? 삽입과 삭제의 방법? : 완전 이진 트리 형태로 중복 값을 허용한 반 정렬 상태. 반 정렬의 뜻은 같은 레벨의 자식들끼리는 정렬이 보장되지 않는다는 뜻. 최소 힙은 상위 노드가 더 작은, 최대 힙은 상위 노드가 더 큰 형태이다. 완전 이진 트리 형태이기 때문에 배열로 구현해도 충분하다. 최소 힙 기준. 삽입의 경우 트리의 가장 끝 위치에 데이터를 삽입하고, 부모 노드와 키를 비교한 후 작을 경우 부모 자리와 교체하는 것을 반복한다. 삭제의 경우 최상위 노드를 반환 및 삭제하고, 가장 마지막 위치의 노드를 최상위 노드로 위치시킨 후 자식 노드 둘과 비교하여 더 작은 노드와 자리를 교체한다. - [Java] asList 사용법과 정수 배열을 ArrayList..

2023. 03. 17 금요일 - 링크드 리스트란? 특징? 장단점? 구조? : 데이터를 링크로 연결해서 관리하는 자료구조. 자료의 순서는 정해져 있지만, 메모리 상의 연속성은 보장되지 않음. 장점으로는 리스트의 길이가 가변적이므로 데이터 공간을 미리 할당할 필요가 없지만, 단점으로 연결구조를 위한 별도 데이터와 추가/삭제 시 재구성 작업이 필요하고, 연결 정보를 찾는 시간이 느림. 구조는 노드(값 & 포인터)가 헤드, 테일 및 중간 단 노드들이 있다. - 링크드 리스트의 노드 추가/삭제 시 유의점? : 데이터 추가 위치에 따라서 헤드, 중간, 테일에의 추가 연결 작업이 각각 따로 필요하다. 연결 순서는 데이터의 유실을 고려하여 data1.next -> data3.next -> data2 의 순서이면 안 ..
2023. 03. 16 목요일 - 해시 테이블이란? 해시 테이블의 구조? 해싱이란? : 키, 값을 대응시켜 저장하는 데이터 구조. 키를 통해 데이터에 빠르게 접근 가능. 구조는 키, 해시값 외에 해시 함수와 해시 테이블로 구성되어 있다. 해시 테이블은 해시값을 저장하는 메모리고, 보통 해시값은 키의 값을 해시 함수를 통하여 변형시켜 정하는데, 해시 함수는 개발자의 역량과 목적에 따른 것이며 좋은 해시 함수란 겹침을 최소화하는 해시값을 만드는 함수이다. 해싱이란 키를 특정 계산식에 넣어 나온 결과를 사용하여 값에 접근하는 과정. - 해시 충돌이란 무엇이며 해시 충돌 해결 방법 2가지? 설명? : 다른 키가 해시 함수를 통해 같은 값을 내어 같은 주소의 테이블에 접근하는 것을 해시 충돌이라 한다. 이미 저장..

2023. 03. 15 수요일 - [Java] StringTokenizer란 무엇이며 생성자? 주요 함수? : 해당 문자열을 구분 문자에 의하여 나누어 토큰으로 저장하는 클래스로서 Iterator와 비슷하다. StringTokenizer st = new StringTokenizer(나누려는 문자열, 구분 문자); 로 생성. (+ String의 join은 String.join(이어줄 구분 문자, 이을 문자열); 로 파라메타의 위치가 반대.) 주요 함수로는 int countTokens(); / boolean hasMoreTokens(); / String nextToken(); 으로 Iterator와 비슷하다. - 투 포인터란? 이중 for문과의 차이? : 투 포인터는 두 개의 포인터를 만들고, 각각이 가리키..

2023. 03. 14 화요일 - [Java] Queue 클래스 객체 생성법? 주요 함수? : Queue는 인터페이스이므로, 직접 객체를 만들 순 없으나 (만들려면 내부의 추상 메서드를 모두 override 해야 함.) LinekedList로 업캐스팅하여 쉽게 만들 수 있다. Queue queue = new LinkedList(); add()/ poll()/ peek()/ contains(value)/ size()/ isEmpty()/ clear() Queue는 Stack과 조금 다르게 clear 상태에서 poll을 하면 null을 반환한다. - ArrayList와 LinkedList의 차이? : ArrayList는 특정 인덱스에 삽입/삭제 시에 해당 인덱스 이후 모든 인덱스를 한 칸씩 미루거나 당겨서 ..

2023. 03. 13 월요일 - [Java] 스택을 사용하는 방법? 특징? : Stack stack = new Stack(); stack.push(item) / stack.pop(); // stack이 비어있을 때 pop을 하면 예외 발생. stack.peek(); // 가장 마지막 원소를 반환해주지만, pop하진 않음. stack.contains(value); / stack.size(); / stack.empty(); / stack.clear(); - 스프링에서 테스트를 쉽게 만드는 단축키? : ctrl shift t // 해당 클래스 내에서 눌러야 한다. 해당 클래스 명 +Test 라는 테스트 클래스가 자동 만들어지며, 어떤 메서드를 넣을 것인지도 설정할 수 있다. - [Java] 테스트 케이스를 ..