본문 바로가기
반응형

전체 글183

코딩 테스트 1. 백준 2018 [풀이] import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int numN = Integer.parseInt(sc.nextLine()); int sum = 1; int start = 1; int end = 1; int count = 1; while (Math.ceil(numN / 2.0) > start) { if (sum == numN) { count++; end++; sum += end; } else if (sum > numN) { sum -= start; start++; } else { end++; sum += .. 2023. 10. 3.
알고리즘 이론 (퀵 정렬 ~ 기수정렬) 퀵 정렬 기준값(pivot)을 선정해 해당 값보다 작은 데이터와 큰 데이터로 분류하는 것을 반복해 정렬하는 알고리즘 기준값, 투 포인터 사용 시간 복잡도 O(nlogn) worst case = n^2 병합 정렬(merge sort) 투 포인터 개념을 사용하여 왼쪽, 오른쪽 그룹을 병합함 시간 복잡도 O(nlogn) 한 섹션 안에서 n개의 수를 정렬하는 횟수 = n 섹션 수 = n/2/2/2… → logn 기수 정렬(radix sort) 데이터의 자릿수를 비교함 시간 복잡도 O(kn) → 여기서 k는 데이터의 자릿수 10개의 큐를 이용 (10진수인 데이터에 의해) 시간 복잡도가 가장 좋지만 구현하기가 비교적 복잡함 2023. 10. 3.
CS 준비 - 네트워크 웹 동작 방식 client → web server → db client → was(web application server) → db client → web server → was(web application server) → db 사용자가 브라우저에 URL을 입력하면 브라우저는 DNS를 통해 입력 받은 URL과 매칭되는 IP를 반환 받습니다. HTTP 프로토콜을 사용하여 HTTP요청 메세지를 생성한 후, TCP/IP 연결을 통해 해당 IP의 서버로 메세지가 전송됩니다. 요청 메세지를 전달 받은 해당 서버는 요청에 대한 HTTP 응답 메세지를 생성하여 해당 클라이언트에게 전송합니다. 도착한 HTTP 응답 메세지는 웹 페이지 데이터로 변환되고, 웹 브라우저에 의해 출력 되어 사용자가 볼 수 있게 됩니다. .. 2023. 10. 3.
코딩 테스트 1. 백준 10986 [풀이] import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main{ public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()); int numN = Integer.parseInt(st.nextToken());.. 2023. 10. 2.
자료구조 이론 Big-O 표기법 worst case와 average case의 시간복잡도가 비슷한경우가 많기때문에 worst case의 알고리즘의 시간복잡도를 나타내기도함 시간복잡도의 최고차수로 표현됨 (상수 제외함) O(n!) > O(2^n) > O(n^2) > O(nlogn) > O(n) > O(logn) > O(1) Best case 가장 낮은 시간 복잡도 Average case 시간복잡도의 평균값 Worst case 가장 높은 시간 복잡도 8 bit (2^3) → 1byte 1024byte (2^10) → 1KB 1024KB (2^10) → 1MB 하나하나의 바이트마다 주소값을 갖는다 메모리 할당 int → 4byte char → 1byte 2023. 10. 2.
CS준비 - 자료구조 자료구조와 알고리즘 자료구조는 데이터를 저장하고 관리하는 방식입니다. 알고리즘은 선택된 자료구조에 의해 쌓인 데이터를 활용한 문제 해결 방식 입니다. 자료구조에 따라 알고리즘이 달라지며, 알고리즘에 따라 문제 해결 속도가 달라집니다. 스택, 큐, 트리, 힙 구조 설명 스택 : 후입 선출의 구조 즉, LIFO(Last-in First-out)의 구조로 되어있습니다. 큐 : 선입 선출의 구조 즉, FIFO(First-in First-out)의 구조로 되어있습니다. 트리 : 노드로 이루어진 자료구조이며, 정점(Root)과 간선(edge)로 이루어져있습니다. 계층이 있는 데이터를 표현하기에 적합합니다. 힙 : 최댓값 또는 최솟값을 찾아내는 연산을 쉽게 하기 위해 고안된 구조로, 완전 이진트리의 구조를 가집니다... 2023. 10. 2.
알고리즘 이론 (시간복잡도 ~ 삽입정렬) ✅시간 복잡도알고리즘 선택의 기준이 됨 시간 복잡도를 줄이는 방법알맞은 알고리즘 사용비효율적인 로직 찾아서 효율적으로 리팩토링 (ex)다중 for문) ✅배열과 LinkedList배열은 인덱스가 있기 때문에 값에 접근하는 속도가 리스트에 비해 빠르다.리스트는 포인터로 연결되어있기 때문에 데이터를 삽입하거나 삭제하는 연산 속도가 배열보다 빠르다.크기 변화가 없는 데이터를 다룰때는 배열, 크기가 변하기 쉬운 데이터를 다룰때는 리스트리스트는 포인터를 저장할 공간이 필요하므로 배열보다 구조가 복잡하다. ✅구간 합합 배열을 이용하여 시간 복잡도를 더 줄이기 위해 사용하는 특수한 목적의 알고리즘 합 배열 S를 만드는 공식S[i] = S[i-1] + A[i] 구간 합을 구하는 공식i~j까지의 합 → S[j] - S[i.. 2023. 9. 27.
트랜잭션 트랜잭션 ACID 원자성(Atomicity) : 원자처럼(원자는 절대 깨지지 않는것 처럼) 마치 하나의 작업인것처럼 일관성(Consistency) : 무결성 제약 조건 항상 만족 격리성(Isolation) : 동시에 같은 데이터를 수정하지 못하도록 지속성(Durability) : 중간에 시스템에 문제가 발생해도 데이터베이스 로그 등을 사용해서 성공한 트랜잭션 내용을 복구해야 함 격리성 완전한 격리성을 보장하려면 직렬처리가 가장 적합하나, 성능이슈가 생기기 때문에 트랜잭션 격리 수준(Isolation level)을 선택할 수 있다. 수동 커밋 모드 set autocommit false; 락(lock) SET LOCK_TIMEOUT 10000 (10초안에 락을 얻지 못하면 LOCK TIMEOUT 오류 발생됨.. 2023. 9. 4.
JDBC 이해 JDBC 표준 인터페이스 JDBC(Java Database Connectivity)는 자바에서 데이터베이스에 접속할 수 있도록 하는 자바 API이다. JDBC는 데이터베이스에서 자료를 쿼리하거나 업데이트 하는 방법을 제공한다. Connection - 연결 Statement - SQL 전달 ResultSet - 결과 응답 JDBC 드라이버 JDBC 인터페이스를 각각의 DB 벤더(회사)에서 자신의 DB에 맞도록 구현해서 라이브러리로 제공한다. PreparedStatement Statement의 자식 타입 '?'(물음표 기호)를 통한 파라미터 바인딩을 가능하게 해줌 SQL Injection 공격을 예방하려면 PreparedStatement를 통한 파라미터 바인딩 방식을 사용해야함 DriverManagerDat.. 2023. 8. 30.
반응형