분류 전체보기 338

[CS] 컴포넌트 스캔과 의존관계 주입

지금까지 스프링 빈을 등록할 때 자바 코드의 @Bean 이나 XML의 등을 통해서설정 정보에 직접 등록한 스프링 빈을 나열했다.이렇게 등록해야 할 스프링 빈이 수십,수백개가 되면 일일이 등록하기 귀찮고, 설정 정보가 커지고, 누락하는 문제도 발생한다.그래서 스프링은 설정 정보가 없어도 자동으로 스프링 빈을 등록하는 컴포넌트 스캔을 제공한다.또한 의존관계도 자동으로 주입하는 @Autowired 기능도 제공한다.컴포넌트 스캔컴포넌트 스캔이란?스프링 컨테이너가 클래스패스를 탐색하면서 특정 애노테이션이 붙은 클래스를 자동으로 스프링 빈으로 등록하는 기능즉, 개발자가 일일이 등록하지 않아도 스프링이 스프링 빈으로 등록해준다.컴포넌트 스캔 장점설정 코드 감소수십,수백 개의 빈을 일일이 등록할 필요 없음설정 파일이 ..

CS 2026.01.27

[CS] 싱글톤과 싱글톤 컨테이너

싱글톤 패턴순수한 DI 컨테이너 @Test @DisplayName("스프링 없는 순수한 DI 컨테이너") void pureContainer() { AppConfig appConfig = new AppConfig(); //1. 조회: 호출할 때 마다 객체를 생성 MemberService memberService1 = appConfig.memberService(); //2. 조회: 호출할 때 마다 객체를 생성 MemberService memberService2 = appConfig.memberService(); //참조값이 다른 것을 확인 System.out.println("memberService1 = " + memberService1); Syste..

CS 2026.01.27

[프로그래머스] 86491 : 최소직사각형 (Python/파이썬)

문제 링크https://school.programmers.co.kr/learn/courses/30/lessons/86491문제명함 지갑을 만드는 회사에서 지갑의 크기를 정하려고 합니다. 다양한 모양과 크기의 명함들을 모두 수납할 수 있으면서, 작아서 들고 다니기 편한 지갑을 만들어야 합니다. 이러한 요건을 만족하는 지갑을 만들기 위해 디자인팀은 모든 명함의 가로 길이와 세로 길이를 조사했습니다.아래 표는 4가지 명함의 가로 길이와 세로 길이를 나타냅니다.명함 번호 가로 길이 세로 길이1 60 502 30 703 60 304 80 40가장 긴 가로 길이와 세로 길이가 각각 80, 70이기 때문에 80(가로) x 70(세로) 크기의 지갑을 만들면 모든 명함들을 수납할 수 있습니다. 하지만 2번 명함을 가로로..

카테고리 없음 2026.01.27

[CS] 스프링 컨테이너, 스프링 빈

스프링에서는 누가 객체를 만들고, 누가 관리할까?그 역할을 담당하는 것이 스프링 컨테이너고, 그 안에서 관리되는 객체가 스프링 빈이다.이번 글에서는 스프링 컨테이너, 빈이 무엇인지 , 왜 필요한지 정리하려고 한다.스프링 컨테이너스프링 컨테이너란?스프링 컨테이너는 자바 객체(빈)의 생명 주기(생성,관리,제거 등)를 관리하며, 생성된 자바 객체들에게 추가적인 기능을 제공한다.쉽게 말하면, 스프링 컨테이너는 객체를 대신 만들어주고, 관리해주는 관리자라고 볼 수 있다.개발자는 객체를 직접 생성하지 않아도 되고,스프링 컨테이너가 빈(Bean) 이라는 객체를 생성한 뒤, 객체들 사이의 관계를 자동으로 연결해준다.이렇게 객체 생성과 제어의 주도권이 개발자가 아닌 스프링에게 넘어가는 것을 IoC, 제어의 역전이라고 한..

CS 2026.01.26

[프로그래머스] 42586 : 기능개발 (Python/파이썬)

문제 링크https://school.programmers.co.kr/learn/courses/30/lessons/42586문제프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다.또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 기능보다 먼저 개발될 수 있고, 이때 뒤에 있는 기능은 앞에 있는 기능이 배포될 때 함께 배포됩니다.먼저 배포되어야 하는 순서대로 작업의 진도가 적힌 정수 배열 progresses와 각 작업의 개발 속도가 적힌 정수 배열 speeds가 주어질 때 각 배포마다 몇 개의 기능이 배포되는지를 return 하도록 solution 함수를 완성하세요.제한 사항작업의 개수(progresses, speeds..

카테고리 없음 2026.01.26

[프로그래머스] 1848 : 폰켓몬 (Python/파이썬)

문제 링크https://school.programmers.co.kr/learn/courses/30/lessons/1845문제당신은 폰켓몬을 잡기 위한 오랜 여행 끝에, 홍 박사님의 연구실에 도착했습니다. 홍 박사님은 당신에게 자신의 연구실에 있는 총 N 마리의 폰켓몬 중에서 N/2마리를 가져가도 좋다고 했습니다.홍 박사님 연구실의 폰켓몬은 종류에 따라 번호를 붙여 구분합니다. 따라서 같은 종류의 폰켓몬은 같은 번호를 가지고 있습니다. 예를 들어 연구실에 총 4마리의 폰켓몬이 있고, 각 폰켓몬의 종류 번호가 [3번, 1번, 2번, 3번]이라면 이는 3번 폰켓몬 두 마리, 1번 폰켓몬 한 마리, 2번 폰켓몬 한 마리가 있음을 나타냅니다. 이때, 4마리의 폰켓몬 중 2마리를 고르는 방법은 다음과 같이 6가지가..

카테고리 없음 2026.01.26

[프로그래머스] 42626 : 더 맵게 (Python/파이썬)

문제 링크https://school.programmers.co.kr/learn/courses/30/lessons/42626문제매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같이 특별한 방법으로 섞어 새로운 음식을 만듭니다.섞은 음식의 스코빌 지수 = 가장 맵지 않은 음식의 스코빌 지수 + (두 번째로 맵지 않은 음식의 스코빌 지수 * 2)Leo는 모든 음식의 스코빌 지수가 K 이상이 될 때까지 반복하여 섞습니다.Leo가 가진 음식의 스코빌 지수를 담은 배열 scoville과 원하는 스코빌 지수 K가 주어질 때, 모든 음식의 스코빌 지수를 K 이상으로 만들기 ..

카테고리 없음 2026.01.26

[프로그래머스] 42748 : K번째 수 (Python/파이썬)

문제 링크https://school.programmers.co.kr/learn/courses/30/lessons/42748문제배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때, k번째에 있는 수를 구하려 합니다.예를 들어 array가 [1, 5, 2, 6, 3, 7, 4], i = 2, j = 5, k = 3이라면array의 2번째부터 5번째까지 자르면 [5, 2, 6, 3]입니다.1에서 나온 배열을 정렬하면 [2, 3, 5, 6]입니다.2에서 나온 배열의 3번째 숫자는 5입니다.배열 array, [i, j, k]를 원소로 가진 2차원 배열 commands가 매개변수로 주어질 때, commands의 모든 원소에 대해 앞서 설명한 연산을 적용했을 때 나온 결과를 배열에 담아 return..

카테고리 없음 2026.01.26

[프로그래머스] 12906 : 같은 숫자는 싫어 (Python/파이썬)

문제 링크https://school.programmers.co.kr/learn/courses/30/lessons/12906문제배열 arr가 주어집니다. 배열 arr의 각 원소는 숫자 0부터 9까지로 이루어져 있습니다. 이때, 배열 arr에서 연속적으로 나타나는 숫자는 하나만 남기고 전부 제거하려고 합니다. 단, 제거된 후 남은 수들을 반환할 때는 배열 arr의 원소들의 순서를 유지해야 합니다. 예를 들면,arr = [1, 1, 3, 3, 0, 1, 1] 이면 [1, 3, 0, 1] 을 return 합니다.arr = [4, 4, 4, 3, 3] 이면 [4, 3] 을 return 합니다.배열 arr에서 연속적으로 나타나는 숫자는 제거하고 남은 수들을 return 하는 solution 함수를 완성해 주세요.제..

카테고리 없음 2026.01.26

[프로그래머스] 42576 : 완주하지 못한 선수 (Python/파이썬)

문제 링크https://school.programmers.co.kr/learn/courses/30/lessons/42576문제수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다.마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작성해주세요.제한사항마라톤 경기에 참여한 선수의 수는 1명 이상 100,000명 이하입니다.completion의 길이는 participant의 길이보다 1 작습니다.참가자의 이름은 1개 이상 20개 이하의 알파벳 소문자로 이루어져 있습니다.참가자 중에는 동명이인이 있..

카테고리 없음 2026.01.26