분류 전체보기 1341

Ch04. 스프링 빈과 의존관계 - 컴포넌트 스캔과 자동 의존관계 설정

이 상태만 되면은 스프링 컨테이너가 해당 빈을 등록해 준다.(컨테이너가 관리해준다) 스프링이 시작될 때, 등록된 빈의 모두 생성해준다. 스프링 컨테이너에 등록되어 있는 서비스 객체를 가지고 와야 되기 때문에 Autowire를 사용한다 MemberController 또한 스프링 컨테이너에서 관리되어야 되기 때문에 @Controller로 컨테이너에 등록한다. Service Repository @Component를 붙히게 되면 스프링 컨테이너가 관리하게 되는데 @Controller,@Service,@Repository 모두 안에 @Component가 붙어있다. 컨포넌트 어노테이션을 보고 스프링 컨테이너가 빈으로 등록해 주는 방식이 컴포넌트 스캔 방식이다. inflearn.startspring 밑에 있는 Com..

스프링 입문 2021.11.27

LEVEL 3 : 자물쇠와 열쇠

https://programmers.co.kr/learn/courses/30/lessons/60059 코딩테스트 연습 - 자물쇠와 열쇠 [[0, 0, 0], [1, 0, 0], [0, 1, 1]] [[1, 1, 1], [1, 1, 0], [1, 0, 1]] true programmers.co.kr 문제 예시 key를 시계 방향으로 90도 회전하고, 오른쪽으로 한 칸, 아래로 한 칸 이동하면 lock의 홈 부분을 정확히 모두 채울 수 있습니다. 풀이 완전 탐색 문제 이다(모든 경우의 수를 전부 다 대입) Padding 부분이 너무 어려워서 다른 사람 코드를 참고했습니다ㅠㅠ 최대 회전이 4번까지 가능하므로 4 * M * M 배열을 생성합니다 [0] 번째는 입력받은 키 그대로 [1] 번째는 [0]번째를 90도..

LEVEL 3 : 다단계 칫솔 판매

https://programmers.co.kr/learn/courses/30/lessons/77486 코딩테스트 연습 - 다단계 칫솔 판매 민호는 다단계 조직을 이용하여 칫솔을 판매하고 있습니다. 판매원이 칫솔을 판매하면 그 이익이 피라미드 조직을 타고 조금씩 분배되는 형태의 판매망입니다. 어느정도 판매가 이루어진 후, programmers.co.kr 문제 풀이 부모노드를 찾아가는 dfs 문제이다. 비용을 담을 배열(정답), 부모 노드를 담을 배열을 선언한다. 모든 노드를 탐색하며, 부모노드의 인덱스를 넣어준다. find함수 만약 부모노드가 없다면 referral[i] == "-" 일 경우, -1 값을 넣어준다. 판매된 제품을 반복문을 돌며, 현재 판 제품을 Index와 money값을 가지고 온다 dfs..

LEVEL 3 : 순위

https://programmers.co.kr/learn/courses/30/lessons/49191 코딩테스트 연습 - 순위 5 [[4, 3], [4, 2], [3, 2], [1, 2], [2, 5]] 2 programmers.co.kr 문제 풀이 플로이드 와샬 문제로 모든 경우의 수를 계산한다. 2차원 boolean 형식을 map을 생성한 뒤, 플로이드 와샬 알고리즘을 사용한다. i -> k , k -> j 가 연결되어 있다면 i->j 또한 연결되어 있다. if(map [i][k] && map [k][j]) map [i][j] = true; 모든 경우의 수를 다 계산한 뒤, 자기 자신을 제외한 다른 것들의 순위중 계산할 수 없는 게 한 개라도 존재하면 순번을 알 수 없는 노드이다 자기 자신을 제외한 ..

LEVEL 3 : 네트워크

https://programmers.co.kr/learn/courses/30/lessons/43162 코딩테스트 연습 - 네트워크 네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다. 예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어있고, 컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있 programmers.co.kr 문제 풀이 BFS로 연결된 네트워크 개수를 세는 문제이다. 방문 여부를 계산할 N길이의 Visit 배열을 선언 후 연결된 네트워크 체크 bfs 함수를 통해 해당 노드번호와 연결된 모든 노드의 방문 상태를 TRUE로 바꾸어 준다. bfs 함수 연결된 노드들의 담기위한 Queue를 선언한다. 시작 노드의 방문 상태를 TRUE로 바꾼 뒤, Queue에 시작 노드..

Ch03. 회원 관리 예제(백엔드 개발) - 회원 서비스 테스트

테스트 코드는 한글로 메서드명 작성해도 된다(Build 되서 올라가지 않기 때문) given(무엇이), when(언제) , then(검증) 이러한 순서로 테스트 작성을 권장 회원가입 로직에서 데이터가 잘 저장되는것도 중요하지만 에러 처리도 잘되었는지 확인하는 것도 중요 중복 회원이 예외처리가 잘 되었는지 확인 방법 1: try-catch 를 통해 에러가 발생했는지 확인 가능 방법 2: assertThrows로 에러가 발생했는지 확인 가능 회원 전체조회,한명조회 해당 Test들도 순서에 의존적이므로 repository에 clearStore() 메서드를 호출해 주어야 된다. 의존성 주입 MemoryMemberRepository memberRepository = new MemoryMemberRepository..

스프링 입문 2021.11.26

Ch03. 회원 관리 예제(백엔드 개발) - 회원 리포지토리 테스트 케이스 작성

테스트를 먼저 작성 후, 테스트 케이스에 맞게 구현 클래스를 맞춰 끼우는 것을 TDD라고 한다. assertThat과 Assertions.assertEquals 테스트를 진행할 수 있다. 객체가 동등한 지 비교해 준다. 이름으로 조회가 잘되는지 테스트 모든 내용 조회가 되는지 테스트 테스트는 순서에 의존되서는 안 된다. 어떤 테스트가 먼저 되든 상관없어야 된다(어떤 것을 먼저 수행시켜 줄지 모르기 때문) 따라서 테스트를 진행 후, 데이터를 제거해 주어야 된다. 테스트가 종료되는 시점에 호출된다. 테스트 데이터를 지워준다.

스프링 입문 2021.11.26