전체 글
-
[버블정렬] 백준 1377번책/DoIt 알고리즘 코딩테스트 2024. 11. 8. 12:53
문제bool change = false;for (int =1; i a[j+1] ){ change = true; swap(a[j], a[j+1]); } } if(change == false){ cout 위 버블 소트를 구현한 c++ 코드의 의도를 구하는 문제1. 1번째 줄에 N이 주어진다( 1 2. 2번째 줄부터 N개의 줄에 A[1] ~ A[N] 까지 1개씩 주어진다( 0 3. 시간제한 2초 문제 분석최대 500,000개까지 배열의 개수가 정해질 수 있으므로 O(N^2)일 경우 시간초과가 나게 된다 (버블 정렬은 시간복잡도가 O(N^2)이므로, 최대 개수는 10,000 이다 - 1초에 1억번 연산)[해결방법]1. 문제에서는 버블정렬..
-
[버블정렬] 백준 2750번책/DoIt 알고리즘 코딩테스트 2024. 11. 7. 12:35
문제N개의 수가 주어졌을 때, 이를 오름차순 정렬하는 프로그램을 작성하시오.- 1번째 줄에 수의 개수 N (1 - 2번째 줄부터 N개의 줄에 숫자가 주어짐- 수는 중복되지 않는다 문제 분석하기숫자 범위가 1,000으로 매우 작기 때문에, O(N^2) 시간복잡도 알고리즘을 사용해도 문제 없음버블정렬 알고리즘을 이용하여 문제풀이 슈도코드N(정렬할 수 개수)A(정렬할 배열 선언)for(i : 0~N -1){ for(j : 0 ~ N -1 -i) { 현재 A배열의 값보다 1칸 오른쪽 배열의 값이 더 작으면 두 수 바꾸기 }}A 배열 출력 구현import java.io.BufferedReader;import java.io.InputStreamReader;public class App ..
-
[정렬] 버블정렬알고리즘 2024. 11. 7. 11:10
정렬정렬 알고리즘정의시간복잡도삽입대상을 선택해 정렬된 영역에서 선택 데이터의 적절한 위치를 찾아 삽입하면서 정렬하는 방식O(N) ~ O(N^2)버블데이터의 인접 요소끼리 비교하고, swap 연산을 수행하며 정렬하는 방식O(N^2)선택대상에서 가장 크거나 작은 데이터를 찾아가 선택을 반복하면서 정렬하는 방식O(N^2)퀵pivot 값을 선정해 해당 값을 기준으로 정렬하는 방식O(NlogN) ~ O(N^2)힙이진트리를 이용하여 최대힙(오름차순)/최소힙(내림차순) 트리를 구성해 정렬하는 방식O(NlogN)병합이미 정렬된 부분 집합들을 효율적으로 병합해 전체를 정렬하는 방식O(NlogN) + 추가적인 메모리 필요기수데이터의 자릿수를 바탕으로 비교해 데이터를 정렬하는 방식O(N) + 추가적인 메모리 필요 버블정렬데..
-
[JDBC] JDBC 템플릿데이터베이스/JDBC 2024. 11. 6. 19:04
JDBC 템플릿 선언public class Test{ private final JdbcTemplate template; public Test(DataSource dataSource){ template = new JdbcTemplate(dataSource); } } JDBC 템플릿 사용법삽입, 업데이트, 삭제template.update([sql구문], [구문에필요한 파라미터1], [구문에필요한 파라미터2] ..)조회RowMapper는 결과값을 매핑하는 용도template.update([sql구문], [RowMapper()] , [구문에필요한 파라미터2] ..)private RowMapper testRowMapper() { return (rs, rowNum) ..
-
[JDBC] 스프링 예외 변환기데이터베이스/JDBC 2024. 11. 6. 18:45
UnChecked예외 (데이터 접근)생성방법UnChecked예외를 먼저 만든다Checked -> UnChecked 예외로 변경 (변경시, 에러코드가 존재하면 해당 예외로 변경)예외처리public class DBErrorException extends RuntimeException{ ///... }public class Service{ //... try{ logic(); }catch (SQLException e){ if ( e.getErrorCode().isEqualTo(42122) ){ // 42122는 "SQL bad Grammer" 오류 코드 throw new DBErrorException(e..
-
[JAVA] Exception(Checked 예외, UnChecked예외)프로그래밍 언어/JAVA 2024. 11. 6. 17:08
예외 계층1. 예외계층은 최상위 계층의 Object 하위에 속한다2. Exception과 Error로 나뉘게 되는데, 흔히 말하는 예외는 Exception을 말한다3. RuntimeException(하위 자식 포함)은 실행도중에 잡히는 예외이며, 나머지 예외는 컴파일단계에서 예외로 잡히게된다(RuntimeException과 하위계층은 UnChecked예외라고 불리며, 나머지 예외는 Checked예외로 불린다) 예외처리예외 잡아서 처리하기 Exception으로 catch할 경우 모든 예외가 다 잡힌다계층의 위치에 따라 하위 예외들은 모두 포함되게 된다 (주의 : Exception을 남발할경우, 의도치 않게 모든 예외가 처리될 수 도 있음)public void func(){ try{ ..
-
우선순위 큐알고리즘 2024. 11. 6. 14:59
우선순위 큐?Priority Queue? 큐와 동일하게 FIFO 구조를 가지는데, 특이한점은 들어온 순서가 아닌 우선순위에 따라서 삽입/삭제 순서가 정해진다따로 정렬 기준을 정하지 않을경우, 오름차순으로 정렬이된다 (작은수가 우선순위)reverseOrder()를 사용하면 내림차순으로 정렬이된다 (큰 수가 우선순위) 우선순위 큐 특징높은 우선순위의 요소를 먼저 꺼내서 처리내부 요소는 힙으로 구성되어 이진트리 구조로 이루어짐힙으로 구성되어있어 시간복잡도는 O(NlogN)이다우선순위를 중요시할때 사용한다 우선순위큐 메서드선언)PriorityQueue [우선순위큐 이름] = new PriortyQueue();삽입add() / offer()을 사용하여 삽입add()는 가득차있으면, Exception 예외offer..
-
[우선순위 큐]백준 11286번책/DoIt 알고리즘 코딩테스트 2024. 11. 6. 14:32
문제1. 첫번째 입력값으로 연산의 개수 N이 주어진다 (1 2. 다음 N개의 줄에는 정수x가 주어진다3. x값이 0이 아니라면 배열에 x라는 값을 추가하고, x가 0이라면 배열에서 절대값이 가장 작은 값을 출력한다(단, 절대값이 같을경우 음수를 우선순위로 둔다)*2초이내 풀이 문제분석N의 최대 범위가 100,000이므로 O(nlogn)이 가능하다데이터가 새로 삽입될때마다 절대값과 관련된 정렬이 필요하므로 우선순위 큐를 이용하여 문제를 해결주의) 정렬기준은 직접 정의해야함 (절대값에 따른 값이 같은 경우 기준 설정 필요) 슈도코드N(질의 요청개수 입력)우선순위 큐 설정for(N만큼 반복){ 요청이 0일때, 비어있으면 0 출력 / 있으면 front 출력 (poll()) 요청이 0이 아닐때, que..