공부 기록

    BOJ 1759 - 암호 만들기

    https://www.acmicpc.net/problem/1759 1759번: 암호 만들기 첫째 줄에 두 정수 L, C가 주어진다. (3 ≤ L ≤ C ≤ 15) 다음 줄에는 C개의 문자들이 공백으로 구분되어 주어진다. 주어지는 문자들은 알파벳 소문자이며, 중복되는 것은 없다. www.acmicpc.net 아이디어 일단 먼저 최소 한개의 모음과 최소 두 개의 자음이라는 조건을 제외하고 생각해보자 서로 다른 C개의 알파벳 소문자들 중 L개를 중복없이 사전순으로 순서있게 나열하는 순열 문제이다. C개의 알파벳을 먼저 정렬한 후 중복없이 사전순으로 조합을 짜기 위해 prev 인자를 통해 k자리의 다음 자리인 k+1 자리는 prev +1 부터 탐색하도록 설정해서 완전 탐색으로 모든 경우의 수를 구한다. 이제 여..

    [Spring] 빈 스코프

    [Spring] 빈 스코프

    출처 : 김영한님의 스프링 핵심 원리 - 기본편 인프런 강의 스프링 핵심 원리 - 기본편 - 인프런 | 강의 스프링 입문자가 예제를 만들어가면서 스프링의 핵심 원리를 이해하고, 스프링 기본기를 확실히 다질 수 있습니다., - 강의 소개 | 인프런... www.inflearn.com 빈 스코프란? 빈이 존재할 수 있는 범위로 이때까지의 스프링 빈은 싱글톤 스코프를 가진 스프링 컨테이너의 시작과 함께 생성되고 종료화 함께 소멸되었다. 싱글톤 스코프 : 기본 스코프로 생명주기가 스프링 컨테이너와 같은 가장 긴 스코프이다. 프로토타입 스코프 : 스프링 컨테이너가 프로토타입 빈의 생성과 의존관계 주입까지만 관여하고 더는 신경 안쓰는 짧은 스코프 웹 관련 스코프 request : http 고객 요청이 오고 나서 최..

    BOJ 14888 - 연산자 끼워넣기

    14888번: 연산자 끼워넣기 첫째 줄에 수의 개수 N(2 ≤ N ≤ 11)가 주어진다. 둘째 줄에는 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 100) 셋째 줄에는 합이 N-1인 4개의 정수가 주어지는데, 차례대로 덧셈(+)의 개수, 뺄셈(-)의 개수, www.acmicpc.net 아이디어 주어진 순서를 바꾸면 안되니까 연산자만 순서를 잘 조합해서 숫자 사이사이에 끼워넣으면 된다. 연산자는 딱 N-1개만큼 주어지고 모두 사용해야 하니까 N-1개의 연산자를 순서있게 나열하는 순열문제이다. 연산자를 +, -, *. / 순으로 개수를 받으니까 +를 1, -를 2, *를 3, /를 4로 인덱스를 설정하고 이 인덱스들을 N-1개 만큼 순서있게 나열한 후 인덱스로 연산자를 불러와서 계산하면 된다...

    BOJ 1182 - 부분수열의 합

    1182번: 부분수열의 합 첫째 줄에 정수의 개수를 나타내는 N과 정수 S가 주어진다. (1 ≤ N ≤ 20, |S| ≤ 1,000,000) 둘째 줄에 N개의 정수가 빈 칸을 사이에 두고 주어진다. 주어지는 정수의 절댓값은 100,000을 넘지 않는다. www.acmicpc.net 1. 아이디어 먼저 정답의 최대치 계산해보기 먼저 N의 최대치가 20이이니까 부분수열의 개수는 최대 2^20 -> int N 결정 부분수열의 합은 최대 20*1,000,000 -> int S 결정 N개의 정수를 중복을 허용하지 않고 합이 S가 되는 진부분수열을 구하는 문제 1~N 크기의 부분수열 전부 체크해서 합이 S가 되는 경우 찾으면 되겠다!!! 부분 수열은 중복을 허용하지 않고 순서도 고려하지 않기 때문에 조합으로 구하면..

    [Spring] 빈 생명주기 콜백

    [Spring] 빈 생명주기 콜백

    출처 : 김영한님의 스프링 핵심 원리 - 기본편 인프런 강의 스프링 핵심 원리 - 기본편 - 인프런 | 강의 스프링 입문자가 예제를 만들어가면서 스프링의 핵심 원리를 이해하고, 스프링 기본기를 확실히 다질 수 있습니다., - 강의 소개 | 인프런... www.inflearn.com 빈 생명주기 콜백 데이터베이스 커넥션 풀, 네트워크 소켓 등 애플리케이션 시작 시점에 필요한 연결을 미리 해두고 애플리케이션 종료 시점에 연결을 모두 종료하는 작업을 진행하려면 객체의 초기화와 종료 작업이 필요하다. 데이터베이스 커넥션 풀 : 애플리케이션은 보통 관계형 DB를 사용하는데 TCP/IP 핸드쉐이킹 작업이 오래 걸리기 때문에 애플리케이션 서버가 올라올 때 DB랑 미리 연결을 맺어놓는다. 이렇게 하면 고객의 요청이 올..

    BOJ 14889 - 스타트와 링크

    14889번: 스타트와 링크 예제 2의 경우에 (1, 3, 6), (2, 4, 5)로 팀을 나누면 되고, 예제 3의 경우에는 (1, 2, 4, 5), (3, 6, 7, 8)로 팀을 나누면 된다. www.acmicpc.net 예를 들어, 1, 2번이 스타트 팀, 3, 4번이 링크 팀에 속한 경우에 두 팀의 능력치는 아래와 같다. 스타트 팀: S12 + S21 = 1 + 4 = 5 링크 팀: S34 + S43 = 2 + 5 = 7 1, 3번이 스타트 팀, 2, 4번이 링크 팀에 속하면, 두 팀의 능력치는 아래와 같다. 스타트 팀: S13 + S31 = 2 + 7 = 9 링크 팀: S24 + S42 = 6 + 4 = 10 1. 아이디어 모든 N은 짝수이고 N/2명씩 팀을 짜니까 N개의 자연수에서 중복을 허용하..

    [Spring] 의존관계 자동 주입

    [Spring] 의존관계 자동 주입

    출처 : 김영한님의 스프링 핵심 원리 - 기본편 인프런 강의 스프링 핵심 원리 - 기본편 - 인프런 | 강의 스프링 입문자가 예제를 만들어가면서 스프링의 핵심 원리를 이해하고, 스프링 기본기를 확실히 다질 수 있습니다., - 강의 소개 | 인프런... www.inflearn.com 다양한 의존관계 주입 방법 1. 생성자 주입 지금까지 했던 방법으로 생성자에 @Autowired를 붙여 의존관계를 주입하는 방법이다. 생성자 호출 시점에 딱 1번만 호출되는 것이 보장되고 불변, 필수 의존관계에서 사용한다. 생성자 호출 시점에 모든 연관 관계 그림을 다 만들고 끝내놓으려는 의도 -> 공연 전 배우 미리 다 캐스팅해둔다. 배우는 무조건 있어야 하고(필수) 바뀌어선 안된다(불변). 불변 : 처음 1번 호출될 때를 ..

    객체 지향의 사실과 오해 - 책임과 메시지

    객체 지향의 사실과 오해 - 책임과 메시지

    출처 : 객체지향의 사실과 오해 조영호 저 | 위키북스 자율적인 책임 설계의 품질을 좌우하는 책임 적절한 책임을 적절한 객체에게 할당하는 과정에서 적절한 책임이 자율적인 객체를 만든다. 자율적인 객체들이 모여 유연하고 단순한 협력을 만듬 자율적인 객체 자율적인 객체 : 스스로 정한 원칙에 따라 판단하고 스스로의 의지를 기반으로 행동하는 객체 자율적인 객체가 되기 위해선 할당되는 책임이 자율적이어야 함 -> 왕은 모자장수에게 '글로 요약하라', '시간 순서대로 말하라' 처럼 상세한 요청이 아닌 '증언하라'라는 자율성이 충분히 보장된 책임을 할당 왕의 입장에서 모자 장수가 어떤 방법으로 증언하는 지는 전혀 중요 X how가 아닌 what을 생각 -> '시간 순서대로 말하라' 처럼 '어떻게'가 아닌 '증언하라..

    [Spring] 컴포넌트 스캔

    [Spring] 컴포넌트 스캔

    출처 : 김영한님의 스프링 핵심 원리 - 기본편 인프런 강의 스프링 핵심 원리 - 기본편 - 인프런 | 강의 스프링 입문자가 예제를 만들어가면서 스프링의 핵심 원리를 이해하고, 스프링 기본기를 확실히 다질 수 있습니다., - 강의 소개 | 인프런... www.inflearn.com 컴포넌트 스캔과 의존관계 자동 주입 지금까지는 @Bean으로 직접 설정 정보 AppConfig로 스프링 빈을 나열했다. 하지만 등록해야할 스프링 빈이 많아지면 설정 정보도 커지고 누락되기도 쉬운 문제가 발생한다. 그래서 스프링은 이런 문제를 해결하기 위해 설정 정보가 없어도 자동으로 스프링 빈을 등록하는 컴포넌트 스캔이라는 기능을 제공한다. 또한 의존관계도 자동으로 주입해주는 @Autowired도 제공한다. @Component..

    BOJ 15666 - N과 M (12)

    15666번: N과 M (12) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 1. 아이디어 N개의 자연수 중 중복을 허용하여 M개를 골라 순서있게 나열하는 중복순열 문제이다. 비내림차순이어야 하니까 재귀호출 시 prev를 넘겨주어 탐색하는 다음 자리는 이전 자리보다 큰 수, 즉 prev+1부터 탐색하도록 설정한다. N개의 자연수 중 같은 수가 여러번 나올 수 있다는 것을 생각해야 한다. N이 1 7 9 9 이고 M이 2인 경우를 생각해보면 1 1 1 7 1 9 1 9 7 7 7 9 7 9 9 9 9 9 9 9 문제의 조건이 중복되는 수..