- [ 기록/프로그래머스 ][프로그래머스 / 자바] 소인수분해2023-10-25 08:34:40문제 소인수분해란 어떤 수를 소수들의 곱으로 표현하는 것입니다. 예를 들어 12를 소인수 분해하면 2 * 2 * 3 으로 나타낼 수 있습니다. 따라서 12의 소인수는 2와 3입니다. 자연수 n이 매개변수로 주어질 때 n의 소인수를 오름차순으로 담은 배열을 return하도록 solution 함수를 완성해주세요. 풀이 import java.util.ArrayList; class Solution { public int[] solution(int n) { int i = 2; ArrayList arr = new ArrayList(); while (n != 1) { if(n % i == 0) { n /= i; if(!arr.contains(i)) arr.add(i); } else { i++; } } int[] an..
- [ 기록/프로그래머스 ][프로그래머스 / 자바] 문자열 여러 번 뒤집기2023-10-23 19:59:40문제 문자열 my_string과 이차원 정수 배열 queries가 매개변수로 주어집니다. queries의 원소는 [s, e] 형태로, my_string의 인덱스 s부터 인덱스 e까지를 뒤집으라는 의미입니다. my_string에 queries의 명령을 순서대로 처리한 후의 문자열을 return 하는 solution 함수를 작성해 주세요. 풀이 class Solution { public String solution(String my_string, int[][] queries) { char[] arr = my_string.toCharArray(); for(int i = 0; i < queries.length; i++){ int s = queries[i][0]; // 시작인덱스 int e = queries[i]..
- [ 기록/프로그래머스 ][프로그래머스 / 자바] 팩토리얼2023-10-23 13:53:26문제 i팩토리얼 (i!)은 1부터 i까지 정수의 곱을 의미합니다. 예를들어 5! = 5 * 4 * 3 * 2 * 1 = 120 입니다. 정수 n이 주어질 때 다음 조건을 만족하는 가장 큰 정수 i를 return 하도록 solution 함수를 완성해주세요. 풀이 class Solution { public int solution(int n) { int answer = 0; for(int i = 1; i
- [ 기록/프로그래머스 ][프로그래머스 / 자바] 합성수 구하기2023-10-23 13:31:27문제 약수의 개수가 세 개 이상인 수를 합성수라고 합니다. 자연수 n이 매개변수로 주어질 때 n이하의 합성수의 개수를 return하도록 solution 함수를 완성해주세요. 풀이 for(int i =1; i
- [ 기록/프로그래머스 ][프로그래머스 / 자바] 배열 회전시키기2023-10-23 12:49:12문제 정수가 담긴 배열 numbers와 문자열 direction가 매개변수로 주어집니다. 배열 numbers의 원소를 direction방향으로 한 칸씩 회전시킨 배열을 return하도록 solution 함수를 완성해주세요. 풀이 class Solution { public int[] solution(int[] numbers, String direction) { int[] answer = new int[numbers.length]; if(direction.equals("right")) { answer[0] = numbers[numbers.length-1]; //3 for(int i = 0; i < numbers.length-1; i++){ answer[i+1] = numbers[i]; } } else { i..
- [ 기록/프로그래머스 ][프로그래머스 / 자바] 2차원으로 만들기2023-10-23 11:24:07문제 정수 배열 num_list와 정수 n이 매개변수로 주어집니다. num_list를 다음 설명과 같이 2차원 배열로 바꿔 return하도록 solution 함수를 완성해주세요. num_list가 [1, 2, 3, 4, 5, 6, 7, 8] 로 길이가 8이고 n이 2이므로 num_list를 2 * 4 배열로 다음과 같이 변경합니다. 2차원으로 바꿀 때에는 num_list의 원소들을 앞에서부터 n개씩 나눠 2차원 배열로 변경합니다 풀이 class Solution { public int[][] solution(int[] num_list, int n) { int[][] answer = new int[num_list.length/n][n]; int idx = 0; for(int i = 0; i < num_lis..
- [ 공부/Spring ][Spring] 스프링 핵심 원리 기본편 6) 컴포넌트 스캔2023-10-23 10:51:24스프링 핵심 원리 - 기본편 Session 6 컴포넌트 스캔 1. 컴포넌트 스캔과 의존관계 자동 주입 시작하기 1) 컴포넌트 스캔 @Bean이나 XML의 등을 통해 설정 정보에 직접 스프링 빈을 나열했다 → 스프링 빈이 수백개가 되면 설정 정보도 커지고 누락 등의 문제가 생김 스프링은 자동으로 스프링 빈을 등록해주는 컴포넌트 스캔이라는 기능을 제공해주고 의존관계도 자동으로 주입해주는 @Autowired라는 기능도 제공한다. 2) AutoAppConfig 생성 @Configuration @ComponentScan(excludeFilters = @Filter(type = FilterType.ANNOTATION, classes = Configuration.class)) public class AutoAppCo..
- [ 공부/Spring ][Spring] 스프링 핵심 원리 기본편 5) 싱글톤 컨테이너2023-10-22 13:43:42스프링 핵심 원리 - 기본편 Session 5 싱글톤 컨테이너 1. 웹 애플리케이션과 싱글톤 1) 스프링이 없는 순수한 DI 컨테이너 웹 애플리케이션은 보통 여러 고객이 동시에 요청한다. 요청할 때마다 객체가 생성해 메모리 낭비가 심한 문제점이 있다. 객체 하나만 생성되고 공유하도록 설계해야 한다. ▶ 싱글톤 패턴 2) 순수한 DI컨테이너 테스트 // 구성정보 클래스인 AppConfig에서 객체를 가져온다. AppConfig appConfig = new AppConfig(); //1. 조회: 호출할 때 마다 객체를 생성 MemberService memberService1 = appConfig.memberService(); MemberService memberService2 = appConfig.membe..