728x90

전체 글 268

[Spring] 컴포넌트 스캔 - Component Scan

컴포넌트 스캔 [Component Scan] 자바 스프링 컨테이너에 빈을 등록하는 방법으로 애플리케이션의 클래스패스를 스캔하여 특정 Annotation이 붙은 클래스를 자동으로 감지하고, 스프링 빈으로 등록하는 기능이다. 빈을 등록하는 방법에는 크게 두 가지가 있고 각각의 장단점이 있다.1. 자바 코드의 @Bean, Xml의 등을 통해 수동으로 직접 등록 자바 코드와 Xml 파일 내에 직접 등록할 빈의 정보를 나열하는 방식이다. 1.1 설정 방법@Configuration을 사용하여 설정클래스를 정의하고 @Bean을 사용하여 빈을 등록한다.import org.springframework.context.annotation.Bean;import org.springframework.context.annotat..

백엔드/Spring 2024.07.11

[Spring] 스프링 컨테이너 - Spring Container

스프링 컨테이너 [Spring Container] 주요 컨테이너BeanFactoryApplicationContext BeanFactory스프링 컨테이너의 최상위 인터페이스로 가장 기본적인 컨테이너이며 설정된 빈을 생성하고 관리한다.지연 로딩(lazy loading)을 지원하여, 빈이 실제로 필요할 때 생성한다.getBean() 메서드를 지원한다. ApplicationContextBeanFactory를 상속받는 인터페이스로 더 많은 기능을 제공한다.예를 들어, 메시지 소스 지원, 이벤트 발행, AOP 기능 등을 포함한다.더 많은 부가기능들이 지원되어 일반적으로 더 많이 사용된다. 결론적으로 부가기능이 포함된 ApplicationContext를 주로 사용하므로 BeanFactory를 사용할 일은 거의 없다...

백엔드/Spring 2024.07.11

[Programmers] PCCP 모의고사 #2 체육대회 JAVA

[Programmers] PCCP 모의고사 #2 체육대회접근DFS재귀 함수백트래킹풀이학생의 수가 최대 10명이길래 처음엔 DFS를 이용해 구현해보려 했다. 정답은 맞혔지만 학생수가 10명 밖에 되지 않는데도 불구하고 효율이 매우 좋지 않았다. 아마 BFS를 사용했다면 시간초과가 났을 것이다.private static class State { private final int step; private final int abilitySum; private final boolean[] checkAbility; private final boolean[] checkStudent; public State(int step, int abilitySum, boolean[] checkAbility, boolean[] che..

[Programmers] PCCP 모의고사 #1 외톨이 알파벳 JAVA

[Programmers] PCCP 모의고사 #1 외톨이 알파벳접근중복 제거정규식replaceAllMap풀이같은 알파벳이 문자열 내에 두 개 이상 떨어져 존재한다면 외톨이 알파벳이다. 연속된 덩어리 알파벳은 외톨이가 아니다. 즉 문자열 내에 존재하는 알파벳들을 2개 이상 중복되는 부분을 모두 한 개로 치환한 다음. 각 알파벳의 등장 횟수를 계산해 2회 이상 등장했다면 외톨이 알파벳이 되는 것이다.String makeOne = input_string.replaceAll("(.)\\1+", "$1");정규식을 사용해 치환하는 이 코드 한 줄로 문제의 80퍼센트는 이미 해결되었다. 정규식에 대해 설명해 보자면 (.)은 임의의 문자를 뜻한다. 입력받는 문자는 알파벳 소문자로 제한된다는 사항이 있기 때문에 굳이 알..

[Programmers] 코딩테스트 디스크 컨트롤러 JAVA

[Programmers] 디스크 컨트롤러접근우선순위 큐풀이문제의 내용은 비선점 스케줄링인 SJF, Shortest Job First 기법과 일치하다. 비선점으로 수행하던 작업이 끝날 때까지 대기하고 끝나고 나면 해당 시점에 대기 중인 프로세스 중 가장 수행 시간이 짧은 프로세스를 먼저 실행하는 기법이다. 선점 스케줄링 기법인 SRF, Shortest Remaining Time First 기법과는 다르게 수행 중인 프로세스를 건들지 않기에 더 간단하게 구현을 할 수 있을 것이다.Arrays.sort(jobs, (a, b) -> a[0] - b[0]);우선 입력받는 jobs를 작업 요청 시간 기준으로 정렬해 주었다.PriorityQueue pq = new PriorityQueue((a, b) -> a[1] ..

[Goorm] 현대모비스 예선 주차시스템 JavaScript

[Goorm] 현대모비스 예선 주차시스템접근BFS풀이자바스크립트로 코딩테스트를 쳐야 하기에 자바스크립트 공부를 시작했다. 문법이 익숙하지 않아 자바로 하는 것처럼 완성한 후 GPT의 도움을 받아 자바스크립트 스타일로 가공(?)을 받았다. 2차원 좌표가 주어지고 칸들을 순회하며 값을 구해야 하기에 BFS를 이용해 탐색을 시도했다.let N = 0;let M = 0;let parking = [];for await (const line of rl) { let str = line.split(" ").map(Number); if (str.length === 2) { N = str[0]; M = str[1]; } else { parking.push(str); } // 입력이 끝나면 처리 if ..

[Programmers] 코딩테스트 광물 캐기 JAVA

[Programmers] 코딩테스트 광물 캐기접근DFS백트래킹풀이광물은 순차적으로 접근해야 하고 현재 단계의 광물만 고려하는 것이 아닌 뒤에 있는 광물도 고려해야 하는 문제이기 때문에 모든 결과를 구하기 위해 DFS를 먼저 생각했다. 우선 시간 복잡도를 확인하기 위해 대략적으로 계산을 해봤다.minerals의 길이: 최대 50각 곡괭이의 최대 개수: 5곡괭이 종류: 3가지 (다이아몬드, 철, 돌)문제의 구성 요소로 minerals의 최대 인덱스는 50 각 곡괭이의 남은 개수는 0~5개로 총 6 그리고 곡괭이의 종류 3 각 곡괭이의 최대 상태 수는 곡괭이 종류 3 x 곡괭이 개수 6 = 216 216 x 50 = 33048 총 33048의 최대 반복수를 가진다. 제한 시간 안에 충분히 통과 가능한 횟수이기..

[Goorm] 구름 먼데이 챌린지 거리두기 JAVA

[Goorm[ 구름 먼데이 챌린지 거리두기접근BFS를 이용해 모든 경우의 수하나의 수식으로 완성동적 프로그래밍풀이사실 문제를 풀기 전 동적 프로그래밍 유형의 문제인 걸 알고 들어갔지만 다른 방법으로도 해결이 가능할까 생각해 봤다. BFS를 사용하게 된다면 N의 범위가 너무 커 시간 초과가 날게 분명했다. 하나의 수식으로 완성을 해보려 했지만 불가능했다. 문제를 보면 1줄의 테이블로 만들 수 있는 경우의 수는 5가지로 0을 테이블 #을 스티커라 표현했을 경우 000 #00 0#0 00# #0# 왼쪽에서부터 스티커가 한 장도 없는 경우 각각 한자리마다 한 장씩 붙어있는 경우 그리고 가운데를 비우고 양 끝에 붙은 경우가 있다. 이제 한 줄의 경우의 수 5가지를 통해 Bottom-up 방식으로 값을 채워 나가면..

728x90