본문 바로가기
컴포넌트 스캔 • 컴포넌트 스캔과 의존관계 자동 주입 시작하기 지금까지는 @Bean으로 직접 빈을 등록해줬지만 등록할 빈이 많아지면 이 방법에는 한계가 있다.. 스프링에는 자동으로 빈을 등록하는 컴포넌트 스캔 기능이 있다! 또 의존관계도 자동으로 주입하는 `@Autowired` 라는 기능도 제공한다. AutoAppConfig클래스를 만들어서 자동으로 빈 등록하는 걸 해보자 컴포넌트 스캔을 사용하면 `@Configuration` 이 붙은 설정 정보도 자동으로 등록되기 때문에, AppConfig, TestConfig 등 앞서 만들어두었던 설정 정보도 함께 등록되고, 실행되어 버린다. 그래서 `excludeFilters` 를 이용해서 설정정보는 컴포넌트 스캔 대상에서 제외했다. 컴포넌트 스캔의 대상이 될 클래스에 @Comp.. 2023. 9. 20.
문자열 내림차순 정렬하기 https://school.programmers.co.kr/learn/courses/30/lessons/12917 Arrays.sort(arr, Collectons.reverseOrder);로 정렬이 될줄 알았는데 char[] 배열이라 그런지 정렬이 안됬고 Stringbuilder를 이용해서 .reverse.toString으로 정렬했다 import java.util.*; class Solution { public String solution(String s) { String answer = ""; char[] arr = s.toCharArray(); Arrays.sort(arr); answer = new StringBuilder(new String(arr)).reverse().toString(); ret.. 2023. 9. 20.
문자열 내 마음대로 정렬하기 https://school.programmers.co.kr/learn/courses/30/lessons/12915 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr Comparator를 sort 내부에 정의할 수 있는걸 알게 되었다, n번째 char가 다르면 기존에 comparator 사용하는 것처럼 하지만 같으면 string1.compareTo(string2) 형태로 비교하면 사전상 앞에 있는 걸로 비교할 수 있다 import java.util.*; public class Solution { public String[] solution(String[] st.. 2023. 9. 19.
나누어 떨어지는 숫자 배열 https://school.programmers.co.kr/learn/courses/30/lessons/12910 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 ArrayList로 푸는 문제인줄 알았는데 stream.filter를 사용하면 바로 쉽게 풀 수 있다! stream 사용법을 좀더 익혀두자. arr 배열을 스트림으로 변환하고 정렬해서 필터링 다음 다시 배열로 바꿧고 만약 정렬결과 해당되는게 없으면 return new in[] {-1};로 -1이 들어간 배열을 반환했다 import java.util.*; public class Solut.. 2023. 9. 19.
가운데 글자 가져오기 https://school.programmers.co.kr/learn/courses/30/lessons/12903/solution_groups?language=java 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr substring으로 문자열 자르는거 잘 익혀두자 import java.util.*; public class Solution { public String solution(String s) { String answer = ""; if (s.length() % 2 == 0) { answer += s.substring(s.length()/2-1,s... 2023. 9. 18.
2016년 https://school.programmers.co.kr/learn/courses/30/lessons/12901 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 노가다로 구했는데 2016년 한정인 경우 말고 다른 경우엔 Calender 클래스를 이용하자! import java.util.*; public class Solution { public String solution(int a, int b) { String answer = ""; int[] mon = new int[13]; int tmp = 0; for (int i = 1; i < mon.lengt.. 2023. 9. 18.
폰켓몬 https://school.programmers.co.kr/learn/courses/30/lessons/1845 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr import java.util.*; public class Solution { public int solution(int[] num_list) { int answer = 0; HashMap arr = new HashMap(); for (int i = 0; i < num_list.length; i++) arr.put(num_list[i], arr.getOrDefault(num_list[i],0)+1).. 2023. 9. 18.
싱글톤 컨테이너 • 웹 어플리케이션과 싱글톤 싱글톤으로 객체의 인스턴스를 단 하나만 만들고 공유하는 방식이 아닌 호출할때마다 새 객체를 만드는 방식을 사용하면 많이 비효율적이다. 일단 비효율적인 DI 컨테이너를 만들고 개선해보자 public class SingletonTest { @Test @DisplayName("스프링 없는 순수 DI 컨테이너") void pureContainer(){ AppConfig appConfig = new AppConfig(); //1. 조회 MemberService memberService1 = appConfig.memberService(); MemberService memberService2 = appConfig.memberService(); System.out.println("membe.. 2023. 9. 18.
3주차 데이터베이스 시스템 : 데이터를 저장, 관리하는 시스템 데이터베이스의 구조 스키마 : 데이터베이스에 저장 되는 데이터 구조와 제약조건을 정의(스키마 안의 속성 하나하나는 attribute) 인스턴스 : 스키마에 따라 데이터베이스에 실제로 저장된 값 3단계 데이터베이스 구조 외부 단계 : 사용자 관점, 여러개가 존재 개념 단계 : 논리적 구조를 저장 내부 단계 : 실제로 저장장치의 관점, 물리적 저장 구조 데이터 독립성 하위 스키마를 변경해도 상위 스키마가 영향을 받지 않는다! 논리적 데이터 독립성 : 개념 스키마가 변경 되어도 외부 스키마엔 영향 X 물리적 데이터 독립성 : 내부 스키마가 변경되어도 개념 스키마엔 영향 X 데이터베이스 사용자 데이터베이스 관리자(DBA) 응용 프로그래머 최종 사용자(= 일.. 2023. 9. 15.
3주차 문자열 포맷팅 - f스트링 쉘정렬 간격을 나눠서 부분적으로 삽입 정렬, 간격을 홀수로 해 주고 정렬한다 def shell_sort(a) : n = len(a) gap = n // 2 while gap >= 1 : if (gap % 2) == 0 : gap += 1 for i in range(gap, n) : j=i while j >= gap and a[ j] < a[ j-gap]: #삽입 위치를 찾음 a[ j], a[ j-gap] = a[ j-gap], a[ j] #항목 이동 j -= gap # print(' Gap=', gap, a) gap = gap//2 a = [5, 3, 8, 4, 9, 1, 6, 2, 7] print("Original :", a) shell_sort(a) print("Shell .. 2023. 9. 15.
2주차 개발환경 sql plus21c, sql developer sqlplus system - cmd에서 입력하고 비밀번호를 입력해서 오라클 접속함 select name from v$database; 2023. 9. 15.
스프링 빈과 스프링 컨테이너 • 스프링 컨테이너 생성 `ApplicationContext` 는 스프링 컨테이너, 인터페이스다 memberApp이나 orderApp에서 만든 `new AnnotationConfigApplicationContext(AppConfig.class);`는 ApplicationContext인터페이스의 구현체이다 스프링 컨테이너는 넘어온 클래스 정보를 사용해서 빈을 등록한다, 빈의 이름은 중복되지 않게 하자! • 스프링 빈 조회 ac.getBean(빈이름, 타입) ac.getBean(타입) 조회하려는 빈이 없으면 오류가 생긴다 • 애플리케이션 빈과 전체 빈 조회 test 폴더에 ApplicationContextInfoTest를 생성하고 테스트 ac.getBeanDefinitionNames(); 메서드로 빈들을 가.. 2023. 9. 13.
OpenCV WebCamTextureToMatExample.cs update부분 // 영상을 mat데이터로 rgbmat에 저장 Utils.webCamTextureToMat(webCamTexture, rgbaMat, colors); //새 매트릭스를 선언하고 거기에 받아온 rgbaMat를 저장 Mat dst = new Mat(); //이미지를 흑백으로 변경, 이미지가 흑백이 되면서 24bit에서 8bit로 변경 Imgproc.cvtColor(rgbaMat, dst, Imgproc.COLOR_BayerBG2GRAY); Imgproc.threshold(rgbaMat, dst, 200, 255,Imgproc.THRESH_BINARY); //Imgproc.putText (rgbaMat, "W:" + rgbaMat.width .. 2023. 9. 13.
프로그래머스 코딩 기초 트레이닝 풀면서 알게된거 str.repeat(n) 문자열을 n번 반복 아스키 코드 A - 65, a - 97 32만큼 차이남 \ 출력하고 싶으면 \\을 해주기! a.concat(b); 문자열 a와 b 합치기 String a = sc.nextLine(); System.out.println(a.replaceAll(" ", "")); 문자열 안에서 특정 문자 교체 삼항연산자 조건문 ? 참 : 거짓 str.chatat(i) - i번째 char 반환 str.indexOf ("O") O가 어딧는지 인덱스를 반환 my_string.repeat(k); string k번 반복해서 출력 String.valueOf(a); String.valueOf(""+a+b); String.valueOf(a)+String.valueOf(b); v.. 2023. 9. 13.
최대점수 구하기(냅색) N개의 문제를 풀려고 합니다.각 문제는 그것을 풀었을 때 얻는 점수와 푸는데 걸리는 시간이 주어지게 됩니다. 제한시간 M안에 N개의 문제 중 최대점수를 얻을 수 있도록 해야 합니다. (해당문제는 해당시간이 걸리면 푸는 걸로 간주한다, 한 유형당 한개만 풀 수 있습니다.) 첫 번째 줄에 문제의 개수와 제한 시간이 주어집니다. 두 번째 줄부터 N줄에 걸쳐 문제를 풀었을 때의 점수와 푸는데 걸리는 시간이 주어집니다. 첫 번째 줄에 제한 시간안에 얻을 수 있는 최대 점수를 출력 입력 5 20 10 5 25 12 15 8 6 3 7 4 출력 41 dp로 문제를 풀때 넣을수 있는 물건의 갯수가 정해져 있으면 뒤에서 부터 시작한다, 9/11 클래스가 없이 2차원 배열을 사용하는 방법으로 다시 풀어보자 import j.. 2023. 9. 11.
동전교환(냅색) dp 문제는 경우를 쪼개서 보는게 중요한 것 같다.. 냅색 알고리즘을 이용해서 푼다 M원을 거슬러 줘야할때 1~M까지 인덱스의 dy배열을 만들어서 최대값으로 초기화한 후 dy[0] = 0(0원 거슬러주는 방법은 0)으로 하고 tmp = dy[j - coin[i]] +1 2023. 9. 10.
가장 높은 탑 쌓기(LIS) 밑면이 정사각형인 직육면체 벽돌들을 사용하여 탑을 쌓고자 한다. 탑은 벽돌을 한 개씩 아래에서 위로 쌓으면서 만들어 간다. 아래의 조건을 만족하면서 가장 높은 탑을 쌓을 수 있는 프로그램을 작성하시오. (조건1) 벽돌은 회전시킬 수 없다. 즉, 옆면을 밑면으로 사용할 수 없다. (조건2) 밑면의 넓이가 같은 벽돌은 없으며, 또한 무게가 같은 벽돌도 없다. (조건3) 벽돌들의 높이는 같을 수도 있다. (조건4) 탑을 쌓을 때 밑면이 좁은 벽돌 위에 밑면이 넓은 벽돌은 놓을 수 없다. (조건5) 무게가 무거운 벽돌을 무게가 가벼운 벽돌 위에 놓을 수 없다. 입력 5 25 3 4 4 4 6 9 2 3 16 2 5 1 5 2 출력 10 최대 부분 증가수열을 응용한 문제, 무게와 넓이 중 하나를 잡아서 내림차순으.. 2023. 9. 9.
최대 부분 증가수열(LIS) !다시 풀어보기 N개의 자연수로 이루어진 수열이 주어졌을 때, 그 중에서 가장 길게 증가하는(작은 수에서 큰 수로) 원소들의 집합을 찾는 프로그램을 작성하라. 예를 들어, 원소가 2, 7, 5, 8, 6, 4, 7, 12, 3 이면 가장 길게 증가하도록 원소들을 차례대로 뽑아내면 2, 5, 6, 7, 12를 뽑아내어 길이가 5인 최대 부분 증가수열을 만들 수 있다. 입력 8 5 3 7 8 6 2 9 4 출력 4 부분증가수열, 원소들의 숫자는 유지해야함 dy[i] = 마지막 숫자를 arr[i]로 하는 부분증가수열의 최대 길이 arr[0]의 dy[i]는 맨 앞이므로 1, 그 뒤에 원소들은 arr[i] 앞 인덱스의 원소들을 반복문으로 돌면서 앞에 원소가 arr[i] 보다 작고, dy[앞에원소]가 0보다 크면 .. 2023. 9. 9.
계단 오르기, 돌다리 건너기 DP : 1차원 배열인 다이나믹 테이블을 이용해서 점화식 형태로 나오는 문제의 값을 구한다 계단을 오를 때 한 번에 한 계단 또는 두 계단씩 올라간다. 만약 총 4계단을 오른다면 그 방법의 수는 1+1+1+1, 1+1+2, 1+2+1, 2+1+1, 2+2 로 5가지이다. 그렇다면 총 N계단일 때 올라갈 수 있는 방법의 수는 몇 가지인가? 계단을 오르는 방법을 저장하면서 푸는 문제 1번 계단 1가지, 2번 계단 2가지, 3번 계단 3가지... d[n] = d[n-1] + d[n-2] 형태 import java.util.*; class Main{ static int[] dy; public int Solution(int n){ dy[1] = 1; dy[2] = 2; for (int i = 3; i 2023. 9. 9.
1,2주차 데이터베이스 용어 데이터 - 값 데이터베이스 : 많은 정보를 저장, 정보 저장 공간 DBMS - 데이터베이스 관리 시스템, 메모리에 db를 적재, 권한, 실제 존재하는 운영 소프트웨어(학사시스템, 예약시스템) 데이터베이스 정의 조직 안에 저장,운영,공유,통합 4가지 데이터베이스 특징 실시간 접근 - 언제나 접근 가능 변화 - db내용을 삽입,삭제,수정을 하면서 정확한 데이터를 유지 동시 공유 - 동시에 접근 가능 내용 기반 참조 - db 내용, 값을 기반해서 참조 2023. 9. 8.