분류 전체보기(301)
-
스프링 컨테이너(Container)와 스프링 빈(Bean)
ApplicationContext를 스프링 컨테이너라 한다. 기존에는 개발자가 AppConfig를 사용해서 직접 객체를 생성하고 DI를 했지만, 이제부터는 스프링 컨테이너를 통해서 사용한다. 스프링 컨테이너는 @Configuration이 붙은 AppConfig를 설정(구성)정보로 사용한다. 여기서 Bean이라 적힌 메서드를 모두 호출해서 반환된 객체를 스프링 컨테이너에 등록한다. 이렇게 스프링 컨테이너에 등록된 객체를 스프링 빈이라 한다. 스프링 빈은 @Bean이 붙은 메서드의 명을 스프링 빈의 이름으로 사용한다.(ex. memberService, orderService) 빈 이름을 직접 부여할 수도 있다. 하지만 빈 이름은 고유해야 한다. 같은 이름을 부여하면 다른 빈이 무시되거나 설정이 덮어버리므로 ..
2022.06.16 -
[백준] 7453: 합이 0인 네 정수
https://www.acmicpc.net/problem/7453 7453번: 합이 0인 네 정수 첫째 줄에 배열의 크기 n (1 ≤ n ≤ 4000)이 주어진다. 다음 n개 줄에는 A, B, C, D에 포함되는 정수가 공백으로 구분되어져서 주어진다. 배열에 들어있는 정수의 절댓값은 최대 228이다. www.acmicpc.net 처음에 풀 때는 정신없이 풀었는데 왜 굳이 이렇게 풀었는지 한 번 정리해볼 필요가 있어보였다. 효율성을 생각하지 않는다면 A,B,C,D 배열 요소마다 조합을 만들어서 배열의 합이 0인지를 확인한다. 이렇게 된다면 $O(N^4)$이라는 시간복잡도를 가지게 된다. (비효율 그자체..) 이런 상황을 방지하기 위해 A,B 배열을 합치고 C,D 배열을 합쳐서 4개의 배열을 2개의 배열로 ..
2022.06.15 -
IoC, DI, 그리고 컨테이너
제어의 역전 IoC(Inversion of Control) - 기존 프로그램은 클라이언트 구현 객체가 스스로 필요한 서버 구현 객체를 생성하고, 연결하고, 실행했다. 한마디로 구현 객체가 프로그램의 제어 흐름을 스스로 조종했다. 개발자 입장에서는 자연스러운 흐름이다. - 반면에 AppConfig가 등장한 이후에 구현 객체는 자신의 로직을 실행하는 역할만 담당한다. 프로그램의 제어 흐름은 이제 AppConfig가 가져간다. 예를 들어서 OrderServiceImpl은 필요한 인터페이스들을 호출하지만 어떤 구현 객체들이 실행될지 모른다. - 프로그램에 대한 제어 흐름에 대한 권한은 모두 AppConfig가 가지고 있다. 심지어 OrderServiceImpl도 AppConfig가 생성한다. 그리고 AppCon..
2022.06.14 -
[LeetCode] 981. Time Based Key-Value Store with lower_bound
https://leetcode.com/problems/time-based-key-value-store/ Time Based Key-Value Store - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 아..역시나 이번에도 시간 초과가 발생한다... 내가 이렇게나 비효율적인 사람이었나 싶다. 그나마 효율적인 탐색을 하겠다고 Binary Search, (B+Tree로 구현된 STL인)Set 등 다양하게 시도하였으나 모두 FAIL 이보다 더 효율적인 방법이 도저히 ..
2022.06.14 -
[Codeforces] 481. Magical String
https://leetcode.com/problems/magical-string/ Magical String - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 이 문제는 앞서 푼 문제의 다음 챌린지로 추천된 문제여서 풀게된 문제이다. 역시나 주어진 규칙을 곧이곧대로 받아들이는 것이 아니라, 규칙 내의 패턴을 활용해야 한다. 규칙 The string s is magical because concatenating the number of contiguous occr..
2022.06.14 -
[Codeforces] awoo's Favorite Problem with Two Pointers💥
분명 처음에 접할 때는 단순한 BFS 문제로 생각해서 쉽다고 여겼으나, 역시나 또 다시 시간 초과를 맞닥뜨렸다. 아무래도 주어진 규칙에 내포된 패턴을 파악해야 하는데, 그렇지 못하고 계속 규칙만을 활용한 무식한 방법을 써서 그런 것 같다. 그래도 시간 초과를 방지하기 위해 만든 장치 1. 중복 탐색을 막기 위한 set 2. 목표로 하는 t 문자열과 다른 알파벳 구간부터 교체 (즉 ab에서 ba로, bc에서 cb로 바꿀 수 있어도 목표로하는 문자열과 동일하면 교체 X) 위 장치를 도입해도 시간 초과가 발생하였다. 아무리 생각해도 내 뇌 용량을 초과하는 문제인 것 같아서 대회 후 댓글을 결국 열어 보았다. 교체 패턴을 살펴보면, ab → ba, bc → cb 식으로만 가능하다. 이를 통해 아래와 같은 발견을..
2022.06.14