728x90

CS 31

[백준] 9372번 JAVA 풀이

[백준] 9372번 JAVA 풀이 최소 신장 트리상근이의 여행 문제 풀이를 처음 봤을때 BFS로 풀어야하나? 라는 생각이 들수도 있다.하지만 이 문제는 최소 스패닝 트리를 사용해 쉽게 풀 수 있는 문제이다. 신장트리란 어떤 그래프에 대해 모든 꼭짓점을 포함하는 부분 그래프이다.최소 신장 트리는 신장 트리에서 최소의 가중치를 가지는 부분 그래프이다. 접근 방법n개의 노드를 모두 이을 수 있는 최소 간선의 개수를 구해보자. 노드의 개수가 2개일 때 간선의 개수는 1개이고,노드의 개수가 3개일 때 간선의 개수는 2개임을 알 수 있다.이를 통해서 노드 개수가 N일때 간선의 개수는 N-1개 임을 알 수 있다. 문제에서 입력되는 값이 그래프의 값이고, 탑승한 비행기의 종류를 출력하기 때문에가중치가 1인 양방향 그래..

CS/알고리즘 21:04:14

다량의 데이터를 활용하여 JPA 성능 개선 및 시간 측정 방식

IT 연합 동아리 코테이토 9기의 백엔드 네트워킹 세번째 주제로 다량의 엑셀 데이터를 얻었을 때, 코드를 리팩토링하여 성능을 향상 시키는 방식에 대해서 알아보려고 합니다. 제가 찾은 방식은 캐시, 비동기, 멀티스레드,  bulk insert (Spring Batch) 사용입니다.  - 먼저 리팩토링 전 [13.656초] - 데이터 삽입 작업을 비동기적으로 처리하여 UI 스레드를 블록하지 않도록 해줍니다. [11.429초]@Async 어노테이션을 활용할 수 있습니다.   - 자주 조회되는 데이터는 캐시에 저장하여 데이터베이스 조회를 줄입니다. [10.389초]@Cacheable 어노테이션을 사용할 수 있습니다.    - bulk insert를 사용하여 성능을 개선할 수 있습니다.대량의 데이터를 한 번에 삽..

CS 2024.05.15

[OS] 임계구역

[OS] 임계구역 1. 전역 변수로 잠금을 구현한 코드 공유 변수 lock=false 상태로 해놓고, lock=true일때 임계구역 사용하기 전역 변수로 잠금을 구현한 코드의 문제 => 동시진입 상황, 공유변수가 하나면 안돼 => 상호배제보장 안됨, 임계 구역은 프로세스 하나씩만 접근해야 한다. 2. 상호 배제 조건을 충족하는 코드 공유변수 2개로 lock 걸기. 상호 배제 조건을 충족하는 코드의 문제 => 타임아웃으로 문맥 교환이 발생한다 => 교착 상태로 무한 대기 문제가 생긴다 => p1은 p2가 끝나길, p2는 p0가 끝나길 기다린다. 3. 상호 배제와 한정 대기 조건을 충족하는 코드 프로세스 번호를 가진 공유변수 하나를 준다. But, 진행의 융통성..

CS/OS 2024.05.01

[OS] 프로세스 동기화

[OS] 프로세스 동기화 학습목표 - 프로세스 간 통신의 개념을 이해하고 종류를 파악한다. - 공유 자원 사용 시 임계구역의 문제를 알아본다. - 임계구역 문제를 해결하기 위한 조건과 해결 방법을 알아본다. 공유 메모리나 공유 파일을 이용한 통신 - 일정한 메모리 영역이나 파일을 공유하고 이를 통해 데이터를 주고받는다. - 데이터를 주고받는 방법을 프로세스끼리 알아서 결정해야 하므로 가장 원시적인 방법이다. 파이프를 이용한 통신 - 프로세스 간 통신을 위해 운영체제가 제공하는 통신 기법 - ex) fork()로 만들어진 부모-자식 간 통신에 파이프 사용 소켓을 이용한 통신 - 네트워크로 연결된 컴퓨터에서 데이터를..

CS/OS 2024.04.30

[OS] 프로세스와 스레드

[OS] 프로세스와 스레드 학습목표 - 프로세스가 생성된 후 어떤 상태 변화를 거치는지 알아보자 - 프로세스 제어 블록의 구성과 문맥 교환 시 동작 과정을 이해하자 - 프로세스의 생성과 복사, 전환 과정을 이해하자 - 스레드의 개념을 이해하고 멀티스레드 시스템의 장점을 알아보자 프로세스의 개념 프로그램이란 저장장치에 저장되어 있는 정적인 상태입니다. 프로세스란 실행을 위해 메모리에 올라온 동적인 상태, 즉 실행 중인 프로그램을 말합니다. 프로세스는 메모리에 적재되어 운영체제의 제어를 받습니다. 운영체제로부터 PCB라는 프로세스 제어 블록을 할당받는다는 것은 곧 프로세스가 존재한다는 의미입니다. 프로세스 제어 블록 PCB란 프로세스를 위해 관리하는 자료구조입니다. 프로세스 구분자란 PCB에서 각 프로세스 ..

CS/OS 2024.04.09

REST API (3)

왜 API는 REST가 잘 안되나? 일반적인 웹과 비교, 웹페이지 HTTP API Protocol HTTP HTTP 커뮤니케이션 사람-기계 기계-기계 Media Type HTML JSON REST API가 실패한 이유 : 커뮤니케이션, Media Type HTML JSON 커뮤니케이션 Hyperlink 가능(a태그) 불가능 Self-descriptive 가능(html 명세) 불완전 Json이 불완전하다는 의미 : 대괄호, 중괄호 파싱, 배열 해석은 가능하지만 그 안에 있는 값이 무엇인지는 정의되지 않음. 따라서 JSON의 문법 해석은 가능하지만, 의미를 해석하려면 별도로 API 문서가 필요하다. HTML은 REST를 성공하였다. 하지만 JSON은 REST를 성공하지 못하였다. 독립적인 진화에 도움 그런데..

CS/CS 교육팀 2024.03.24

REST API (2)

REST REST란? 추상적인 개념? REST : REpresentational State Transfer REST : a way of providing interoperability(상호운용성) between computer systems on the internet WEB(1991) 등장 배경 : 어떻게 인터넷에서 정보를 공유할 것인가? 팀버너스리의 답 : 정보들을 하이퍼텍스트로 연결한다. 표현방식 : HTML 식별자 : URI 전송방법 : HTTP (프로토콜) HTTP/1.0(1994-1996) Roy.T.Fielding : How do I improve HTTP without breaking the Web? HTTP를 정의하게 된다면 기존에 구축되어진 웹과 호환성 문제가 생기는 것을 피하고 싶음 ..

CS/CS 교육팀 2024.03.09

Rest API (1)

Rest API Rest API 발표 목차 웹 기초 (프론트엔드, 백엔드, AWS, HTTP 요청/응답) 웹 아키텍쳐 HTTP JSON 서블릿엔진 Rest API 웹기초(프론트엔드, 백엔드, AWS, HTTP 요청/응답) HTML/CSS/Javascript/React : 프론트엔드 애플리케이션 개발에 사용, 프론트엔드 애플리케이션은 프론트엔드 클라이언트를 반환하는 서버가 존재한다. 프론트엔드에서 반환하는 서버의 역할은 단 한가지 → 프론트엔드 프레임워크 애플리케이션을 반환하는 것 프론트엔드가 하는 역할 : UI 개발 JAVA/Javascript/python/Spring Boot / Node.js : 백엔드 애플리케이션 개발에 사용. 대체로 스프링 부트를 사용하여 Rest API를 구현한다. (Rest A..

CS/CS 교육팀 2024.03.06

2) 0-1 Knapsack Problem

0-1 Knapsack Problem Fractional Knapsack Problem - Greedy 0-1 Knapsack Problem - Dynamic - Backtracking - Branch and Bound 0-1 Knapsack Problem 0-1 knapsack 문제는 greedy 방식으로 optimal을 보장할 수 없다. 0-1 knapsack 문제의 optimal을 보장하기 위해서는 dynamic, backtracking, branch and bound 3가지 방식을 이용해야 한다. 1) Dynamic 동적 알고리즘은 먼저 입력 크기가 작은 부분 문제들을 모두 해결한 후에 그 해들을 이용하여 보다 큰 크기의 부분 문제들을 해경하여, 최종적으로 원래 주어진 입력의 문제를 해결하는 알고..

CS/알고리즘 2023.12.19

1) Fractional Knapsack Problem

Fractional Knapsack Problem Fractional Knapsack Problem - Greedy 0-1 Knapsack Problem - Dynamic - Backtracking - Branch and Bound Greedy 탐욕 알고리즘 greedy는 '욕심많은'이라는 뜻이다. greedy algorithm이란 선택의 순간마다 당장 눈앞에 보이는 최적의 상황만을 쫒는 방식이다. 배낭문제 배낭문제는 최소 비용으로 자원을 할당하는 문제이다. 조합론, 계산이론, 암호학, 응용수학 분야에서 기초적인 문제로 다뤄진다. 배낭문제 응용사례 - 버리는 부분을 최소화시키는 원자재 자르기 - 자산투자 및 금융 포트폴리오에서 최선의 선택 - Merkle-Hellman 배낭 암호 시스템의 키 생성 Fra..

CS/알고리즘 2023.12.18
728x90