전체 글 140

[Spring 기본] 3. Spring 프레임워크 사용하기

1. 스프링 컨테이너 ApplicationContext = 스프링 컨테이너 @Configuration annotation이 붙은 AppConfig 를 구성정보로 사용한다. AppConfig 에서 @Bean 어노테이션이 뭍은 메소드를 모두 호출해서 반환된 객체를 스프링 컨테이너에 등록한다B. 이렇게 스프링 컨테이너에 등록된 객체를 스프링 빈이라고 한다. 따라서 AppConfig 에서 객체를 찾아오는 대신, 스프링 컨테이너에서 필요한 스프링 빈(객체)를 찾아야 한다. AppConfig에서 MemberService 의 구현체를 반환하는 메소드 applicationContext.getBean(, 반환받을 클래스 타입) 함수로 스프링을 받아온다. 2. 스프링 컨테이너 생성 스프링 컨테이너가 생성되는 과정 Appl..

개발/java 2023.12.21

백준 3190 뱀 - 큐, 시뮬레이션

https://www.acmicpc.net/problem/3190 난이도 골드4 문제 'Dummy' 라는 도스게임이 있다. 이 게임에는 뱀이 나와서 기어다니는데, 사과를 먹으면 뱀 길이가 늘어난다. 뱀이 이리저리 기어다니다가 벽 또는 자기자신의 몸과 부딪히면 게임이 끝난다. 게임은 NxN 정사각 보드위에서 진행되고, 몇몇 칸에는 사과가 놓여져 있다. 보드의 상하좌우 끝에 벽이 있다. 게임이 시작할때 뱀은 맨위 맨좌측에 위치하고 뱀의 길이는 1 이다. 뱀은 처음에 오른쪽을 향한다. 뱀은 매 초마다 이동을 하는데 다음과 같은 규칙을 따른다. 먼저 뱀은 몸길이를 늘려 머리를 다음칸에 위치시킨다. 만약 벽이나 자기자신의 몸과 부딪히면 게임이 끝난다. 만약 이동한 칸에 사과가 있다면, 그 칸에 있던 사과가 없어지..

백준 1041 : 주사위- 도형, 그리디 알고리즘

https://www.acmicpc.net/problem/1041 문제 +---+ | D | +---+---+---+---+ | E | A | B | F | +---+---+---+---+ | C | +---+ 주사위는 위와 같이 생겼다. 주사위의 여섯 면에는 수가 쓰여 있다. 위의 전개도를 수가 밖으로 나오게 접는다. A, B, C, D, E, F에 쓰여 있는 수가 주어진다. 지민이는 현재 동일한 주사위를 N3개 가지고 있다. 이 주사위를 적절히 회전시키고 쌓아서, N×N×N크기의 정육면체를 만들려고 한다. 이 정육면체는 탁자위에 있으므로, 5개의 면만 보인다. N과 주사위에 쓰여 있는 수가 주어질 때, 보이는 5개의 면에 쓰여 있는 수의 합의 최솟값을 출력하는 프로그램을 작성하시오. 그림에서 파란색으..

Input 찬찬히 뜯어보기. (BufferedReader와 InputStreamReader?)

Java 에서 Input을 받기 위한 방법 1. BufferedReader Class 서론 저는 C, C++ 로 코드를 많이 짭니다. C, C++은 몇 단계만 거치면 바로 시스템 콜로 read, write 호출하는게 보여서 어떻게 동작하는지 아는게 쉬웠는데 java 는 왜 버퍼를 만들까… 하는 답답함이 있었습니다. 그래서 시간을 내어 원리를 파악하는 시간을 가졌습니다. 1. BufferedReader Class BufferedReader class 는 문자들의 연속을 입력받을 때 사용하는 간단한 클래스입니다. 코딩 테스트에서 속도를 빠르게 한다고 하여 많이 사용하는 클래스입니다. 보통 이런식으로 사용됩니다. BufferedReader 클래스는 안에 InputStreamReader를 반드시 사용해야할까요?..

개발/java 2023.12.11

[Spring 기본] 2. 실제 코드에서의 스프링 프레임워크 핵심 원리

1. 그냥 java 코드를 사용할 때 객체 지향의 원리에 맞게, 역할과 구현을 나누어 분리해봅시다. 회원 가입을 위한 요구사항을 만족하는 프로그램을 먼저 작성해봅시다! 회원 도메인 도메인 간 협력관계 : 기획자와 개발자가 모두 합의하에 참고하는 문서입니다. 클래스 설계 : 개발자가 전체적인 클래스를 설계합니다. public interface MemberService { void join(Member meber); Member findById(int id); } public class MemberServiceImpl implements MemberService { private MemberRepository memberRepository = new MemoryMemberRepository(); //실제 구..

개발/java 2023.12.08

[Spring 기본] 1. 객체 지향 설계와 스프링

어떻게 스프링이 등장하게 되었는지 짤막하게 정리한 글입니다. 실제로 '봄'이라는 뜻에서 spring 이라는 이름을 갖게 되었다는 것이 인상깊었습니다. EJB 지옥 - 예전 개발자들에게 있어 사용하던 EJB는 이론은 좋았으나 구현은 너무 힘들었다고 합니다. 그래서 자바로 돌아가자는 움직임이 생겼습니다. EJB에서 Entity Bean - ORM 기술을 사용중이었는데요, 너무 힘들어하던 개발자 2명이 각각 오픈소스를 개발했습니다. Hibernate : EJB 엔티티빈 기술을 대체. JPA 새로운 표준 정의 Spring framework : EJB 컨테이너 대체, 단순함. 사실상 표준 기술 그 후 EJB에서는 Hibernate 를 만든 개발자 데려와서 JPA를 만들었습니다. JPA: 표준 인터페이스를 만들고,..

개발/java 2023.12.08

1. How does the internet work? & 2. What is HTTP?

1. How does the internet work? 인터넷은 표준화된 프로토콜의 집합들로 각각 통신하는 컴퓨터들의 글로벌한 네트워크입니다. How does the Internet Work? The Internet Explained How Does the Internet Work? Introduction to Internet How does the Internet work? How the Internet Works in 5 Minutes How does the internet work? (Full Course) 2. What is HTTP? Everything you need to know about HTTP What is HTTP? Full HTTP Networking Course An overvie..

Backend Roadmap (백엔드 CS 공부 언제 다해?)

안녕하세요. 저는 백엔드 개발자 지망생입니다. 취업, 면접 준비를 위해 CS 공부를 하다보니, 어떻게 공부할 지 다시금 막막해져올 때가 있더군요.. 원래는 행동파이지만 생각하는 시간을 가져서 방향을 잡고 가고 싶어서 고민을 하루정도 하면서 공부하기 좋은 사이트를 찾아보았습니다. 저는 특성상 강의를 오래 보지 못합니다. 원래 그랬던 것은 아닌데, 개발 공부를 하다보니 바로바로 써먹을 때 얼른 찾아서 쓰고 기억해두는 게 제 성향과 맞더라구요. 그리고 강의를 오랫동안 가만히 보다보면 답답해서 못하겠더라구요. 성격이 조금 급해졌나봅니다. 그래서 저에게 맞는 방법이 뭘까 고민해보았는데요, 저에게 맞는 방법은 이것이었습니다. https://roadmap.sh/backend 많은 분들이 아실만한 사이트입니다. 백엔드..

백준 1107 - 리모컨 - 다이나믹 프로그래밍 & 브루트포스

https://www.acmicpc.net/problem/1107 1107번: 리모컨 첫째 줄에 수빈이가 이동하려고 하는 채널 N (0 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 고장난 버튼의 개수 M (0 ≤ M ≤ 10)이 주어진다. 고장난 버튼이 있는 경우에는 셋째 줄에는 고장난 버튼이 www.acmicpc.net 문제 수빈이는 TV를 보고 있다. 수빈이는 채널을 돌리려고 했지만, 버튼을 너무 세게 누르는 바람에, 일부 숫자 버튼이 고장났다. 리모컨에는 버튼이 0부터 9까지 숫자, +와 -가 있다. +를 누르면 현재 보고있는 채널에서 +1된 채널로 이동하고, -를 누르면 -1된 채널로 이동한다. 채널 0에서 -를 누른 경우에는 채널이 변하지 않고, 채널은 무한대 만큼 있다. 수빈이가 지금 ..

백준 1182 - 부분수열의 합 - 브루트포스 , not 투 포인터

https://www.acmicpc.net/problem/1182 1182번: 부분수열의 합 첫째 줄에 정수의 개수를 나타내는 N과 정수 S가 주어진다. (1 ≤ N ≤ 20, |S| ≤ 1,000,000) 둘째 줄에 N개의 정수가 빈 칸을 사이에 두고 주어진다. 주어지는 정수의 절댓값은 100,000을 넘지 않는다. www.acmicpc.net 부분수열이라는 이름에 걸맞게 투 포인터 알고리즘일 거라고 생각해서 풀이했으나, 문제점을 발견했다. 그 사례는 다음과 같다. 5 3 1 1 1 1 1 이 경우 답은 5Combination(3) = 10인데도 답이 5가 나오는 문제였다. 생각해본 결과 이건 앞으로만 가면서 세기 때문에 중복된 숫자가 있을 경우 각각의 조합의 경우의 수를 찾기가 어렵다는 판단이 들었다..

728x90
728x90