분류 전체보기
-
[Spring / Spring Boot] 단위 테스트 코드 작성해보기BACKEND/Spring 2023. 2. 13. 23:39
Spring Boot 프로젝트를 시작하면서 어떻게 초기 작업을 진행해야하는지 전혀 감이 안잡혀서 정리하며 프로젝트를 시작하려고 한다. 이 글은 책 스프링부트와 AWS로 혼자 구현하는 웹 서비스 1장를 참고하여 작성되었습니다. 이 글에서 다룰 내용은 다음과 같다. 1. 단위 테스트 코드에 대하여 2. 메인 메소드의 코드 톺아보기 3. 테스트 코드 JUnit4로 작성해보기 4. 롬복의 사용법, 그리고 롬복이란? 1. 단위 테스트 코드 이 글에서는 TDD에 관한 이야기가 아닌 기능 단위로 테스트 코드를 작성하는 단위 테스트 코드에 대해서 배울 수 있다. 단위테스트를 작성하지 않는다면 개발 단계는 다음과 같다. 코드를 작성하고 프로그램(Tomcat)을 실행한 뒤 Postman과 같은 API 테스트 도구로 HTT..
-
[Algorithm: 백트래킹(Backtracking)] BOJ 15649 : N과 M(1) (C++)Algorithm 2023. 2. 13. 17:06
백트래킹이란? 해를 찾아가는 도중, 지금의 경로가 해가 될 것 같지 않으면 그 경로를 더 이상 가지 않고 되돌아가는 기법! 기본적으로 백트래킹은 '가능한 모든 방법을 탐색한다'(완전 탐색 기법) 아이디어를 중심으로 한다. 백트래킹은 완전 탐색 기법 중 하나인 DFS에서 가지치기(Pruning)을 통해 가도되지 않는 루트는 고려하지 않고 탐색하는 탐색 기법이다. BOJ 15649 N과 M(1) 이 문제는 1부터 N가지의 숫자 중 M개를 순서 있게 뽑기와 유사하다. 순열의 특징은 중복된 원소가 있으면 안된다는 것이다. 그러면 만일 중복된 원소를 만나는 순간 다른 경로로 가면 된다. 참고한 사이트이다. https://yabmoons.tistory.com/100 [ 순열과 조합 구현 ] - 재귀를 통한 구현(2..
-
[Algorithm: BFS/DFS] 백준 7569 토마토 (C++)Algorithm 2023. 2. 13. 13:52
문제 입력 & 출력 풀이 방법 이 문제를 풀면서 챌린지 요소가 두가지 였는데, 첫번째는 최소 일 수는 어떻게 계산할 것인가였고 두번째는 만일 익지 않은 토마토가 있다면 어떻게 확인할 것인가였다. 두번째에 대한 답안은 그래프 전체 탐색 알고리즘을 돌렸음에도 토마토가 익지 않은게 있다면 바로 -1 을 출력하고 함수를 끝내버리면 됨이다. 최소 일수를 반영하는게 어려웠는데 그 이유는 시작점이 하나가 아니라 첫 날에 익어있는 모든 토마토가 시작점이 되기 때문이다. 어떤 토마토는 4일째에 익었고 어떤 토마토는 5일째에 익을 수도 있다. 그러면 토마토가 익는데 걸리는 최소 일수는 5일이다. 그래서 max 함수를 통해 익는데 가장 오래 걸리는 토마토의 일수를 알아야한다. 여기서 나는 이런 방법을 사용했다. 1. 익는데..
-
[Network] HTTP에 대한 딥다이브Dev 2023. 2. 12. 16:09
HTTP(Hyper Test Transfer Protocol)란, 브라우저와 서버가 통신할 수 있도록 만들어주는 여러 프로토콜 가운데 한 종류로 웹 브라우저와 웹 서버 사이에 HTML(웹 문서를 만들기 위한 언어) 문서를 주고 받는데 쓰이는 통신 프로토콜이다. 초기에는 HTTP 파일을 전송하기 위한 목적으로 만들어졌으나 현재는 JSON, IMAGE 파일 등 또한 전송할 수 있다. 일반적으로 전송 계층(Transport Layer) 프로토콜 TCP를 사용하고 네트워크 계층(Network Layer) 프로토콜로 IP를 사용한다. 이 두 계층을 합쳐서 TCP/IP라는 이름으로 부른다. TCP/IP에서는 IP주소를 사용해서 통신할 컴퓨터를 정하고, 포트 번호를 사용해서 해당 컴퓨터의 어떤 프로그램과 통신할지를 ..
-
[TEST PATTERN] TDD란 무엇일까?Dev 2023. 2. 12. 10:21
TDD(Test Driven Development) TDD란 '테스트 주도 개발'을 의미한다. 반복 테스트를 통한 소프트웨어 방법론으로, 작은 단위의 테스트 케이스를 작성하고 이를 통과하는 코드를 추가하는 단계를 반복하여 구현한다. 짧은 개발 주기의 반복에 의존하는 개발 프로세스 이며 애자일 방법론 중 하나인 eXtream Programming(XP) 의 'Test-First' 개념에 기반을 둔 단순한 설계를 중요시한다. eXtream Programming(XP) ? 미래에 대한 예측을 최대한 하지 않고, 지속적으로 프로토타입을 완성하는 애자일 방법론 중 하나이다. 이 방법론은 추가 요구사항이 생기더라도, 실시간으로 반영할 수 있다. 단위 테스트(Unit Test) ? 말 그대로 한 단위(일반적으로 cl..
-
[Network] REST API를 설계하는 법, REST API란Dev/Server 2023. 2. 5. 18:52
REST API REST의 정의 "Representational State Transfer"의 약자 자원을 이름(자원의 표현)으로 구분하여 해당 자원의 상태(정보)를 주고 받는 모든 것을 의미한다. 간단히 정리하자면 자원(resource)의 표현(representation)에 의한 상태 전달이라고 볼 수 있다. 월드 와이드 웹(WWW)과 같은 분산 하이퍼미디어 시스템을 위한 소프트웨어 개발 아키텍처의 한 형식 REST는 API 작동 방식에 대해 조건을 부과하는 소프트웨어 아키텍처이다. 처음 REST는 인터넷 같은 복잡한 네트워크에서 통신을 관리하기 위한 지침으로 만들어졌다. REST 기반 아키텍처를 사용하면 대규모 고성능 통신을 안정적으로 지원할 수 있다. 또한 쉽게 구현하고 수정할 수 있다. REST는..
-
[BOJ] 11052: 카드 구매하기(C++)Algorithm 2023. 2. 1. 12:30
https://www.acmicpc.net/problem/11052 11052번: 카드 구매하기 첫째 줄에 민규가 구매하려고 하는 카드의 개수 N이 주어진다. (1 ≤ N ≤ 1,000) 둘째 줄에는 Pi가 P1부터 PN까지 순서대로 주어진다. (1 ≤ Pi ≤ 10,000) www.acmicpc.net 문제 요약 민규가 N장의 카드를 사려고 하고 1,2,3,...N 장의 카드팩 가격이 주어진다. 민규는 가장 많은 돈을 지불하여 N장의 카드를 살 것이다. 카드팩의 조합으로 민규가 지불하게 될 돈을 구해라 풀이 민규가 각 카드를 사용하는 방법은 다음과 같다. 1. 그 카드로만 지불한다. 2. 카드와 다른 카드를 합쳐서 지불한다. 2장의 카드를 구매한다고 가정해보자. 2장의 카드는 2장 카드팩을 구매하는 경..
-
[BOJ]11057: 오르막수 (C++)Algorithm 2023. 2. 1. 09:29
https://www.acmicpc.net/problem/11057 11057번: 오르막 수 오르막 수는 수의 자리가 오름차순을 이루는 수를 말한다. 이때, 인접한 수가 같아도 오름차순으로 친다. 예를 들어, 2234와 3678, 11119는 오르막 수이지만, 2232, 3676, 91111은 오르막 수가 아니다. 수 www.acmicpc.net 문제 요약 길이가 N인 오르막의 수를 10007로 나눈 나머지 출력 풀이 길이가 2인 오르막 수를 구하는데 마지막 숫자가 9인 것을 생각해보면, 09,19,29,...99 까지 세어준다. 그런데 09,19,...89까지의 개수는 마지막 숫자가 8의 갯수와 똑같다. 따라서 점화식은 dp[i][n] = dp[i-1][n] + dp[i][n-1] 이 되어야 한다. 위..