110 옮기기 정의0과 1로 이루어진 문자열에서 110을 뽑아서 임의의 위치에 다시 삽입하여 변형할 수 있는 문자열 중 사전 순으로 가장 앞에 오는 문자열을 구해야 한다. 풀이이 문제를 크게 2 부분으로 나눌 수 있다.문자열에서 모든 110을 뽑아내는 과정뽑아낸 110을 임의의 위치를 찾아 삽입하는 과정첫 번째 과정인 문자열에서 모든 110을 뽑아내는 과정은 스택 자료구조를 활용해 뽑을 수 있다.int count = 0;Deque stack = new ArrayDeque();for (char ch : str.toCharArray()) { if (stack.size() >= 2 && ch == '0') { char p = stack.pop(); char pp = stack.pop(); if (p ..

먼저, 스프링부트와 JPA에서 데이터를 저장하는 다음과 같은 코드를 보자.@Service @RequiredArgsConstructor public class UserService { private final UserRepository userRepository; public User externalSave(User user) { return internalSave(user); } @Transactional public User internalSave(User user) { return userRepository.save(user); } }만약 외부에서 UserService.externalSave(user); 를 실..
스트래티지 패턴이라는 이름을 처음 들어봤어도 스프링을 사용해보았다면 아마 금방 이해할 수 있을 것이다. 우리가 스프링을 사용해 웹 애플리케이션을 구현할 때, 일반적으로 사용할 빈 타입을 클래스 내에 멤버 변수로 포함시키고 스프링이 해당 빈 객체를 주입함으로써 사용하게 된다. @Controllerpublic class HelloController { private final HelloService service; public HelloController(HelloService service) { this.service = service; }} 이렇게 함으로써 HelloController의 HelloService 객체는 런타임에서 어떤 객체가 주입되느냐에 따라 실행할 동작을 결..