본문 바로가기

전체 글

(142)
[완전 탐색] N과 M(1) - 중복허용(오름차순) 1. 문제 https://www.acmicpc.net/problem/15652 15652번: N과 M (4) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 2. 주의사항 선택된 이전 값(selected[k-1])을 구할때 인덱스의 시작(0, 1)에 따라서 조회하는 법을 다르게 써야한다. 시작인덱스 1 : 0번째 인덱스의 값은 0이므로 0일때 1로만 치환하면 된다. 시작인덱스 0 : -1번째 인덱스는 존재하지 않으므로(인덱스는 0부터 시작) -1인덱스가 조회되지 않도록 조건을 수정해야한다. 3.풀이 import java.io.*; impo..
[완전 탐색] N과 M(1) - 중복제외 1. 문제 https://www.acmicpc.net/problem/15649 15649번: N과 M (1) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 2. 주의사항 이중 for문을 이용해서 selected배열을 모두 찾을 수도 있지만, 시간복잡도가 오래 걸리게 된다. 그래서 used라는 배열을 이용해서 선택한 숫자의 사용여부를 판단할 수 있다. used : 사용한 숫자를 인덱스로 하며 사용했다면 "1" 미사용이라면 "0"을 저장한다. selected : 선택한 숫자를 저장하는 배열 최초 호출한 재귀함수의 싸이클이 끝났을 경우 선택한..
[완전 탐색] N과 M(3) - 중복허용 1. 문제 https://www.acmicpc.net/problem/15651 15651번: N과 M (3) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 2. 주의사항 selected배열에 선택한 값 N을 넣을 때 배열의 시작이 0인지, 1인지에 따라서 자연수 N선택하는 for문, 최종적으로 출력하기 위한 비교연산(k ==m)이 달라지므로 을 헷갈리면 안된다. N(자연수)을 선택하는 for문의 시작값은 0이아닌 1로 설정(0으로 해도 되나 추가로 +1을 계산해줘야함) 3.풀이 import java.io.*; import java.uti..
[이분 탐색] 수 찾기 https://www.acmicpc.net/problem/1920 1920번: 수 찾기 첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들 www.acmicpc.net import java.io.*; import java.util.*; public class Main { static FastReader scan = new FastReader(); static int N, L, R; static int[] A, B; static void input() { N = scan.nextInt(); A = new int[N]..
[FP] 함수형 프로그래밍이란? 출처 https://mangkyu.tistory.com/111 [프로그래밍] 함수형 프로그래밍(Functional Programming) 이란? 1. 함수형 프로그래밍(Functional Programming)에 대한 이해 [ 프로그래밍 패러다임(Programming Paradigm) ] 프로그래밍 패러다임(Programming Paradigm)은 프로그래머에게 프로그래밍의 관점을 갖게 하고 코드를 mangkyu.tistory.com 프로그래밍의 패러다임 명령형 프로그래밍 : 무엇(What)을 할 것인지 나타내기 보다 어떻게(How) 할 건지를 설명하는 방식 절차지향 프로그래밍 : 수행되어야 할 순차적인 처리 과적을 포함하는 방식(C, C++) 객체지향 프로그래밍 : 객체들의 집합으로 프로그램의 상호작용..
[Spring] AOP와 @Transactional의 동작원리 출처 : https://velog.io/@ann0905/AOP%EC%99%80-Transactional%EC%9D%98-%EB%8F%99%EC%9E%91-%EC%9B%90%EB%A6%AC [Spring] AOP와 @Transactional의 동작 원리 오늘은 @Transactional의 동작 원리를 AOP와 함께 좀 더 자세하게 조사해보려고 한다.여기서 다루는 내용은 다음과 같다.AOP란 무엇이며 왜 사용하는가Spring AOP는 왜 프록시를 사용하는가@Transactional은 velog.io @Transactional의 동작 원리 참고 링크: Proxy형태로 동작하는 JPA @Transactional 참고 링크: Spring AOP에서 Proxy란 ? 참고 링크: [Spring] @Transactio..
[Oracle] Oracle 힌트절 7가지 CBO(Cost Based Optimizer, 비용 기반 옵티마이저) 방식에서 옵티마이저는 주어진 환경(통계정보, SQL문) 하에서 최적의 실행계획(PLAN)을 제공한다. 그런데 잘못된 SQL문이나 부적황한 통계정보로 인하여 엉뚱한 실행계획을 제공할 때도 간혹 있다고 한다. 이때 힌트절을 통해 잘못된 실행 계획을 바로잡을 수 있다. 옵티마이저는 개발자가 사용하는 힌트절을 무조건 수용하지는 않는다. 개발자가 터무니없는 힌트절을 사용하고자 한다면 옵티마이저는 무시할 것이다. SELECT /*+ [힌트절] */ ~ FROMTEST SQL문에서 힌트절은 주석문 안에 표시한다. 그래서 잘못된 힌트절로 인하여 에러를 리턴하는 일은 없다. 단지 힌트절의 내용대로 적용되지 않을 뿐이다. 1. 접근 순서를 결정하는 힌트..
[MongoDB] 기본설명 1. 도큐먼트 정렬된 키와 연결된 값의 집합으로 이루어져 있다. 도큐먼트의 키는 문자열이다. 다음 예외 몇 가지를 제외하면 어떤 UTF-8 문자든 쓸 수 있다. 키는 \0(null 문자)을 포함하지 않는다. \0은 키의 끝을 나타내는데 사용된다. "."과 "$"문자는 몇 가지 특별한 속성을 가지며 특정 상황에서만 사용해야한다.(이후 작성 예정, 예약어로 취급) 특징 1) 몽고DB는 데이터형과 대소문자를 구별한다. 다음 두 도큐먼트는 서로 다르다. {"count" : 5} {"count" : "5"} 다음 두 도큐먼트도 마찬가지다. {"count" : 5} {"Count" : 5} 2) 몽고DB에서는 키가 중복될 수 없다. 다음 다큐먼트는 존재할 수 없다. {"userId" : "oss0202", "use..