전체 글 145

백준 11404 - 플로이드(C++)

문제 https://www.acmicpc.net/problem/11404 11404번: 플로이드 첫째 줄에 도시의 개수 n이 주어지고 둘째 줄에는 버스의 개수 m이 주어진다. 그리고 셋째 줄부터 m+2줄까지 다음과 같은 버스의 정보가 주어진다. 먼저 처음에는 그 버스의 출발 도시의 번호가 www.acmicpc.net 풀이 플로이드 와샬 알고리즘을 이용해서 푸는 문제이다. 플로이드 와샬은 시작에서 목표로 가는데 이 사이에 어떠한 중간지점을 껴서 가는 게 더 짧다면 이 짧은 거리로 경로를 갱신함으로써 최단 경로를 탐색하는 알고리즘이다. 3중 for문을 돌면서 모든 정점을 비교해보면 된다. 입력으로 같은 경로의 다른 비용인 입력이 주어질 수 있으므로, graph 배열에 저장할 때, 현재 저장되어 있는 값보다 ..

9주차 - 프로시저, 트리거, 스프링

사진 수정하고 글 정리!! 기간 230703 - 230707 배운 내용 프로시저, 트리거, 스프링(IoC, AOP, MVC) ◎ 프로시저 / 트리거 / 사용자 정의 함수 1. 정의 1) 프로시저 : 특정 기능을 수행하는 트랜잭션 언어. 미리 데이터베이스 서버에 일련의 SQL 명령을 해 놓고, 프로시저를 실행하여 SQL 명령을 간단하게 실행할 수 있게 한다. 2) 트리거 : 데이터의 입력, 갱신, 삭제 등의 이벤트가 발생하면 트리거의 SQL 문장이 자동으로 실행된다. 3) 사용자 정의 함수 : 프로시저와 유사하며, 처리 결과를 단일값으로 반환한다. 2. 비교 프로시저 트리거 함수(내장함수 x) 실행 직접 호출하여 실행 자동으로 호출 SQL문 안에 포함되어 실행 반환값 없거나 1개 이상 없음 1개(필수) 3..

최단경로 알고리즘

1. 플로이드 워셜 * 이론 모든 지점에서 다른 지점까지의 최단거리를 계산할 때 쓰임. 시작지점을 잡고 목표지점을 잡는다 시작에서 목표로 가는데 이 사이에 어떠한 중간지점을 껴서 가는 게 더 짧다면 이 짧은 거리로 경로를 갱신 이거를 모든 곳에서 함 (모든 시작 모든 목표 모든 중간에서 함) 비어있는 곳은 엄청큰수(inf)로 설정 후 진행 * 구현 for문 세 개 쓰면 됨(중간 - 시작 - 끝 순서로) 만약 그래프의 특정 경로가 중간 지점 거친 경로보다 더한 게 더 크면 갱신 for (int k=0; k 노드 개수 많으면 쓸 수 없음 2. 다익스트라 * 이론 1개의 노드에서 다른 모든 노드로 가는 최단거리 하나의 최단거리를 구할 때 이전까지 구했던 최단 거리 정보를 이용한다. 현재까지 알고 있던 최단 경..

알고리즘/이론 2023.11.27

8주차 - DB

기간 230626 - 230630 배운 내용 DB ◎ DBMS : DataBase Management System. 데이터를 만들고 저장하고 관리하는 기술 - DBMS가 없다면? 1. 직접 파일 열어서 읽어서 조회, 저장해야 함 2. 공유가 어려움 3. 공유가 어려우니까 데이터 중복해서 갖고 있게 됨 4. 중복 저장하다 보니 일관성이 깨짐 5. 무결성 관리 어려움 (무결성=결함 없이 데이터 유지하는 성질) 6. 보안관리 어려움 (권한 있는 사람만 접근하도록 직접 만들어야 함) ◎ 트랜잭션 : all or nothing으로 처리되어야 하는 논리적인 작업 단위 1. 논리적인 작업 단위 : 전부 수행되거나 아무것도 수행되면 안 되는 작업들 ex1) 계좌이체 시 a = a - 10000 b = b + 10000..

Problem 1600 - 말이 되고픈 원숭이(C++)

문제 https://www.acmicpc.net/problem/1600 1600번: 말이 되고픈 원숭이 첫째 줄에 정수 K가 주어진다. 둘째 줄에 격자판의 가로길이 W, 세로길이 H가 주어진다. 그 다음 H줄에 걸쳐 W개의 숫자가 주어지는데, 0은 아무것도 없는 평지, 1은 장애물을 뜻한다. 장애물이 있 www.acmicpc.net 풀이 미로탐색과 같은 일반적인 BFS 문제인데, 상하좌우가 아닌 다른 방향으로도 체크해봐야 하는 문제. 다른 방향(말의 움직임)을 체크하는 건 한도(K번)가 정해져있으므로, 그 한도도 같이 큐에 저장해서 풀었다. 큐에 값을 2개 넣는 건 해봤는데 3개 넣는 건 있는지도 몰랐다. 값을 2개 갖는 큐는 queue q처럼 해주듯이 값을 3개 갖는 큐는 queue q 해주면 된다. ..

7주차 - JAVA

기간 230619 - 230623 배운 내용 JAVA ◎ JAVA 1. 클래스 로더 - 클래스 로더 종류 1) 부트스트랩 (Bootstrap) Class Loader Java 8 jre/lib/rt.jar 및 기타 핵심 라이브러리와 같은 JDK의 내부 클래스를 로드한다. Java 9 이후 더 이상 /rt.jar이 존재하지 않으며, /lib 내에 모듈화 되어 포함됐다. 예) java.base.jmod 2) 확장 (Extensions) Class Loader ($JAVA_HOME/jre/lib/ext/*.jar) Java 9 이후 Platform Loader로 변경 3) 시스템 (System) Class Loader. Classpath에 있는 클래스 파일 혹은 jar에 속한 클래스들을 로드한다. 2. 파일 ..

백준 9019 - DSLR(C++)

문제 https://www.acmicpc.net/problem/9019 9019번: DSLR 네 개의 명령어 D, S, L, R 을 이용하는 간단한 계산기가 있다. 이 계산기에는 레지스터가 하나 있는데, 이 레지스터에는 0 이상 10,000 미만의 십진수를 저장할 수 있다. 각 명령어는 이 레지스터에 www.acmicpc.net 풀이 처음 생각한 방식은 #include #include using namespace std; int a, b; void bfs() { queue q; q.push({a, ""}); while (!q.empty()) { int tmp; int x = q.front().first; string op = q.front().second; q.pop(); if (x == b) { cou..

DFS/BFS

DFS는 스택/재귀로 구현 가능 -> 모든 노드 방문 BFS는 큐로 구현 가능 -> 최단 거리 1. 흐름 1) DFS - 재귀 시작 노드 받아서 방문했다 표시해주고 그래프 사이즈만큼 돌면서 그 그래프에 붙어있는 애들 하나씩 빼서 만약 방문하지 않은애면 다시 dfs 돌기 2) DFS - 스택 시작값 스택에 넣고, 방문했다 표시 스택이 빌때까지 스택의 맨 위에 있는 애한테 붙어있는 애들 하나씩 빼서 만약 방문하지 않았으면 방문했다하고 스택에 추가 더이상 방문하지않거나, 인접한 노드 없으면 스택에서 pop 3) BFS 시작 노드 받아서 큐에 넣고 방문했다 표시 큐가 빌때까지 큐의 앞에서 값 빼내고 아까 빼낸애한테 붙어있는 애들 개수만큼 돌면서 하나씩 빼내서 방문하지 않은애면 큐에 넣고 방문했다 표시 2. 구현..

알고리즘/이론 2023.11.22

6주차 - JAVA

기간 230612 - 230616 배운 내용 JAVA ◎ JAVA 1. JAVA의 특징 1) oop. 강력한 객체지향. 전부 클래스 안에 2) 플랫폼(hw+os)에 독립적 hw, os 종류 매우 다양. 플랫폼 다르면 기계어 다름. 포팅(porting)이 어렵다 JVM만 있으면 한번 컴파일한 거 어떤 플랫폼에서도 실행 가능. 2. JVM / JRE / JDK JVM : 기계어 통역, 메모리 관리, Garbage collection(가비지 컬렉션)을 수행 JIT : 인터프리터(JVM 안에 있음) JVM 안에 1. class loader 2. bytecode 검증기 3. JIT 컴파일러 JRE(Java Runtime Environment) : JVM + ... 자바실행환경 (운영시) java 프로그램 실행하는..

5주차 - React

기간 230607 - 230609 배운 내용 React ◎ React 1. 리액트의 특징 어떤 태그를 쓰든 전체를 감싸는 태그(root)가 필요 그냥 도 가능 시작 태그와 종료 태그를 반드시 작성해야 한다 html에선 같은 거 가능했지만 무조건 또는 로 사용해야 함(=xml의 특징) class 말고 className이라고 써야 함 소괄호는 리턴 포함. 리턴으로 끝나면 대괄호 리턴 리턴 안 할 땐 소괄호 사용불가 2. 커스텀 태그(컴포넌트) 커스텀 태그 만들어줌 대문자로 시작하면 리액트의 컴포넌트 == ~~~~ 리액트 사용해서 커스텀 태그 만들어 쓰면 재사용 가능, 유지보수하기 좋음(여러 코드에 한 번에 변경사항 적용 가능) 리액트로 만든 페이지는 컴포넌트 단위로 이루어져 있다. - 컴포넌트 생성 src/..