본문 바로가기
728x90

넓고 얕은 자료구조 & 알고리즘35

자바로 공부하는 배열과 리스트 📌 배열(Array) 동일한 데이터 타입의 요소들을 순차적으로 저장하는 자료구조이다. 배열은 고정된 크기를 가지고 있다. 인덱스를 사용하여 요소에 접근할 수 있다. 자바에서는 배열을 선언할 때 크기를 지정하거나, 동적으로 크기를 조정할 수 없다. 요소를 추가하거나 삭제하기 위해서는 새로운 배열을 생성하고 기존의 요소를 복사해야 한다. 배열은 메모리 상에 연속적으로 할당되므로 인덱스를 통한 접근이 매우 빠르다. 또한 크기가 고정되어 있기 때문에 요소의 위치를 바로 계산하여 접근할 수 있다. ⌨️ 자바에서의 Array public static void main(String[] args) { String[] strArr = new String[5]; // 초기 배열 크기 5로 설정, 설정하지 않으면 에러 발생.. 2023. 10. 30.
문자열 접두사 접미사 체크 startsWith(), endsWith() 비교대상문자열.startsWith("체크할 문자열") 결괏값은 boolean 타입의 true or false이다. 비교대상문자열.endsWith("체크할 문자열") 결괏값은 boolean 타입의 true or false이다. String str "test"; str.startsWith("t"); // true str.endsWith("t"); // true 2023. 3. 27.
Map - getOrDefault 메서드 getOrDefault Java 8에 추가된 Collection API 함수 중 하나이다. 찾는 키가 존재하면 그 key의 value를 반환하고, 없거나 null이면 설정한 default 값을 반환한다. 사용 방법 getOrDefault(Object key, V defaultValue) key : map 요소의 키 defaultValue : 지정된 키로 매핑된 값이 없거나 null이면 반환하는 default 값 참고 https://woodadada16.tistory.com/14 2023. 3. 24.
다이내믹 프로그래밍(DP, 동적 프로그래밍) 1분 요약 정리 다이내믹 프로그래밍 하나의 문제를 단 한 번만 풀도록 하는 알고리즘이다. 한 번 계산한 문제를 다시 풀어야 하는 비효율적인 알고리즘을 개선할 수 있다. 다이내믹 프로그래밍의 목적 메모리를 사용하여 중복된 연산을 줄이고 중복 연산을 줄여서 수행 속도를 개선한다. 다이내믹 프로그래밍 사용 고려 완전탐색, DFS, BFS 등은 동일한 문제를 다시 푸는(만들 수 있는 모든 조합을 전부 따져봐야 하는) 단점을 가지고 있다. 이미 계산한 문제를 반복적으로 다시 풀어야 하는 비효율성이 보인다면 다이내믹 프로그래밍을 고려하는 것이 좋다. 다이내믹 프로그래밍으로 풀어야 하는지 판단할 수 있는 기준 DFS/BFS로 풀 수 있지만 경우의 수가 너무 많은 문제 경우의 수를 계산할 때 중복 연산이 많은 문제 다이내믹 프로그래밍.. 2023. 3. 14.
스택(stack) & 큐(Queue) 1분 요약 정리 스택(stack) 삽입과 삭제가 한 쪽 끝에서만 이루어지는 데이터 구조이다. 가장 먼저 들어간 데이터가 가장 마지막에 나오는 후입 선출(LIFO, Last In First Out) 방식이다. 삽입/삭제의 복잡도는 O(1)이다. 활용 재귀 알고리즘을 사용할 때 유용하다. 재귀적으로 함수를 호출 할 때, 데이터를 스택에 넣었다가, 재귀 함수를 빠져나올 때 스택에 넣어둔 데이터를 빼는 방식을 사용할 수 있기 때문이다. 웹 브라우저 방문 기록 실행 취소 큐(Queue) 한 쪽에서는 삽입이, 다른 한 쪽에서는 삭제가 이루어진다. 가장 먼저 들어간 데이터가 가장 먼저 삭제되는 선입선출(FIFO, First In First Out) 방식이다. 삽입 연산(enQueue)이 이루어지는 곳을 리어(rear), 삭제 연산(.. 2023. 3. 4.
자료구조의 경계 조건 경계 조건(Boundary Conditions) 어떤 자료 구조든 경계 조건에서 문제가 생기지 않을지 고려해서 설계해야한다. 자료 구조가 비어있는 경우 자료 구조에 단 하나의 요소만 들어있는 경우 자료 구조의 첫번째 요소를 제거하거나 추가하는 경우 자료 구조의 마지막 요소를 제거하거나 추가하는 경우 자료 구조의 중간 부분을 처리하는 경우 출처 : 네이버 부스트 코스 - 자바로 구현하고 배우는 자료구조 2023. 2. 22.
자바 EOF(End of File) 처리 방법 1분 요약(백준 10951) 백준 10951 언뜻 보면 굉장히 단순해 보이는 문제이다. 그런데, 예제 입력을 자세히 보면 일반적인 문제처럼 테스트 케이스 수를 입력받지 않는다. 잉? 그럼 입력이 종료되는지 어떻게 알지? 일단 백준에서는 어떻게 처리되겠지라고 생각했다. 그래서 IntelliJ에서는 데이터 입력이 끝이 났다는 것을 어떻게 표현할까에 대해서만 생각했다. while (true) { try { String str = br.readLine(); StringTokenizer st = new StringTokenizer(str); int A = Integer.parseInt(st.nextToken()); int B = Integer.parseInt(st.nextToken()); bw.write(A + B + "\n"); } cat.. 2023. 2. 21.
자바에서 문자열 곱하기 하는 방법 .repeat() 파이썬에서는 "hello" * 3 // 출력 : hellohellohello 이런 식으로 문자열에 곱셈을 하여 문자열을 숫자만큼 반복하여 입력할 수 있다. 자바에서는 "hello".repeat(3) // 출력 : hellohellohello 위와 같은 방식으로 가능하다. 💡 별 찍기 문제 등 반복적인 문자열을 출력해야 할 때 쓰면 유용하다. 2023. 2. 12.
728x90