1. 컴포넌트 스캔스프링이 관리하는 컨테이너 내에서 개발자가 정의한 빈(Bean)을 자동으로 찾아서 스프링 컨테이너에 등록하는 메커니즘 2. 컴포넌트 스캔의 필요성컴포넌트 스캔을 하지 않으면 아래 코드와 같이 @Bean으로 일일이 등록해줘야한다.실제 개발환경에서는 훨씬 많은 빈(Bean)이 등록될텐데 이런 반복되는 작업을 컴포넌트 스캔으로 줄일 수 있다.@Configuration //설정정보에 적어주는 어노테이션public class AppConfig { @Bean //스프링 컨테이너에 등록이 된다. public MemberService memberService(){ return new MemberServiceImpl(memberRepository()); } @..
1. 싱글톤 패턴의 필요성웹 어플리케이션은 고객이 계속 요청을 하는데 현재 코드상으로는 고객이 요청을 할때마다 memberService객체가 매번 만들어지는 문제가 있다. ✅Appconfig코드//import는 생략했다.@Configuration //설정정보에 적어주는 어노테이션public class AppConfig { @Bean //스프링 컨테이너에 등록이 된다. public MemberService memberService(){ return new MemberServiceImpl(memberRepository());//생성자 주입 //MemberServiceImpl이 필요로 하는 MemberRepository 의존성을 외부에서 주입 } @Bean ..
1. AppConfig 란?- 애플리케이션의 전체 동작 방식을 구성(config)하기 위해, 구현 객체를 생성하고, 연결하는 책임을 가지는 별도의 설정 클래스 2. AppConfig의 필요성- 클라이언트 코드는 구체클래스에 의존하면 안된다.(인터페이스에만 의존해야한다.) 3. 구체클래스에 의존하는 예제 코드public class OrderServiceImpl implements OrderService {// private final DiscountPolicy discountPolicy = new FixDiscountPolicy(); private final DiscountPolicy discountPolicy = new RateDiscountPolicy();}위 코드를 보면 DiscountPolicy가 ..
https://school.programmers.co.kr/learn/courses/30/lessons/12973 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr1. 문제문자열에서 같은 알파벳이 2개 붙어 있는 짝을 찾아서 둘을 제거한뒤 앞뒤로 문자열을 이어붙인다.짝지어 제거할 수 있으면 1 아니면 0을 리턴한다. 2. 문제풀이 포인트1. 문자열 길이가 1,000,000 이하의 자연수다 시간복잡도를 생각해야한다.2. 스택으로 푸는 것이 효율적이다. 3. 첫번째 풀이(실패사례)def solution(s): while len(s) > 1: s ..
https://school.programmers.co.kr/learn/courses/30/lessons/64065 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr1. 문제 특정 튜플을 표현하는 집합이 담긴 문자열 s가 매개변수로 주어질 때, s가 표현하는 튜플을 배열에 담아 return 하도록 solution 함수를 완성해주세요. 2. 문제풀이 포인트1. { } 또한 문자열인데 이 안에서 있는 숫자 집합들을 어떻게 추출할 것인가2. 숫자 집합의 길이순대로 정렬해야한다.3. s의 길이는 5 이상 1,000,000 이하 이기 때문에, 시간복잡도를 생각해야한다. ..
https://school.programmers.co.kr/learn/courses/30/lessons/12930 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr1. 문제단어의 짝수번째 알파벳은 대문자로 홀수 번째 알파벳은 소문자로 바꾼 문자열을 retrun하라 2. 코드def solution(s): answer = '' s = list(s) # 문자를 배열로 만든다. cnt = 0 #문자를 카운트하기 위해 초기화한다. for i in range(len(s)): if s[i] == ' ': ..
https://school.programmers.co.kr/learn/courses/30/lessons/12926 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr1. 문제문자와 숫자를 입력받아 숫자만큼 문자를 일정한 거리만큼 밀어 다른 알파벳으로 만든다.2.문제풀이포인트1. A와 a의 아스키 코드는 다르다. 대문자와 소문자를 구분해야한다.2. 주어진 숫자만큼 밀면 알파벳 범위를 벗어나게된다. 순환구조를 만들어야한다.3. 문자를 숫자로 바꿀때 ord()를 쓰고 숫자를 문자로 바꿀때 chr()함수를 쓴다.4. 문자를 바로 바꿀수없으니 배..
https://school.programmers.co.kr/learn/courses/30/lessons/12949 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr1. 문제두 행렬을 받아서 곱한 결과를 반환하는 함수를 만들어라. 2. 문제풀이흐름행렬의 곱셈을 모르면 못푸는 문제다.1. arr1과 arr2의 곱셈의 결과 크기만큼의 2차원 배열을 초기화한다.2. arr1의 행길이 만큼 순회를 돈다. (행과 열을 곱하기 때문이다.)3. arr2의 열길이 만큼 순회를 돈다. 4. arr1의 열길이 만큼 순회를 돈다. def solut..