전체 글 67

[Spring Boot] 테스트 시 null 값이 들어올 때 간단하게 확인하기

Test 실행 시 값이 안 들어와서 확인해봐야 할 때, Postman으로 번거롭게 확인하는 대신 콘솔에서 찍어볼 수 있다. 1. Component에서 var responseType = new ParameterizedTypeReference(){}; // var responseType = new ParameterizedTypeReference(){}; response의 type을 SearchLocalRes에서 String으로 변경해준다. 2. return 부분을 null로 잠시 바꿔준다. return null; // return responseEntity.getBody(); 해당 라인에 break point를 걸어준다. 3. Test로 가서 debug를 한다. 나의 경우에는, category는 들어왔는데 ..

Java 2023.10.17

[Programmers] 동적 계획법 > 정수 삼각형 (Java)

문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/43105 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 요약 삼각형의 위에서 밑으로 한 칸씩 내려가면서 숫자를 더한다. triangle의 길이만큼 반복한다. 합한 값이 가장 큰 걸 구한다. 구현 착안 한 칸씩 내려가면서 숫자를 더하므로 내려갈 때 선택에 따라 값이 변경된다. 이 말은 즉, 이전까지의 값이 모두 같기 때문에 중복 연산을 피하려면 동적 계획법으로 풀 수 있다. 구현 방식 밑으로 내려가는 방법에는 세 가지가 있다. 내려가면서..

Algorithm 2023.10.13

동적 계획법(dynamic programming)

동적 계획법 복잡한 문제를 여러 개의 간단한 문제로 분리하여 부분의 문제들을 해결함으로써 최종적으로 복잡한 문제의 답을 구하는 방법 원리 1. 큰 문제를 작은 문제로 나눌 수 있어야 한다. 2. 작은 문제들이 반복돼 나타나고 사용되며 이 작은 문제들의 결괏값은 항상 같아야 한다. 3. 모든 작은 문제들은 한 번만 계산해 DP 테이블에 저장하며 추후 재사용할 때는 이 DP 테이블을 이용한다. 이를 memoization 기법이라고 한다. 4. 동적 계획법은 top-down 방식과 bottom-up 방식으로 구현할 수 있다. 피보나치 수열 공식 D[N] = D[N-1] + D[N-2] // N번째 수열 = N-1번째 수열 + N-2번째 수열 구현 방식 1. 동적 계획법으로 풀 수 있는지 확인하기 2. 점화식 ..

Algorithm 2023.10.13

JUnit으로 테스트하기

TDD(Test-driven Development) 테스트 주도 개발에서 사용하지만, 코드의 유지 보수 및 운영 환경에서의 에러를 미리 방지하기 위해서 단위별로 검증하는 테스트 프레임워크 단위테스트 작성한 코드가 기대한 대로 동작하는지 검증하는 절차 JUnit Java 기반의 단위 테스트를 위한 프레임워크 Annotation 기반으로 테스트를 지원하며, Assert를 통해, (예상, 실제)를 통해 검증 Jacoco Java 코드의 코드 커버리지를 체크하는 라이브러리. 결과를 html, xml, csv로 확인 가능하다. build.gradle plugins {} 안에 id 'jacoco' 를 추가해준다. Test Coverage 확인하기 1. report 확인 위와 같이 추가된 것을 확인할 수 있다. ve..

Java 2023.10.13

[Programmers] Hash > 폰켓몬 (Java)

https://school.programmers.co.kr/learn/courses/30/lessons/1845 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 요약 총 N 마리 포켓몬 중 N/2마리를 가져갈 수 있다. 폰켓몬 종류의 수가 최대한 다양하게 가질 수 있도록 선택한다. 구현 착안 가장 많은 종류의 폰켓몬을 선택하는 방법을 찾아야하므로, 중복을 허용하지 않는 hashset을 사용하여 구현한다. 구현 순서 다음과 같은 순서로 생각해볼 수 있다. 1. int[]의 nums를 hashset으로 담아주어 중복을 제거한다. 2. answer는 has..

Algorithm 2023.10.12

[Computer Architecture] 0과 1로 문자 표현하기

1. 컴퓨터가 표현하는 정보 단위 bit 컴퓨터가 이해하는 가장 작은 정보 단위. 0과 1로 나타낸다. 1byte = 8bit kB : 1kilobyte = 1,000byte MB : 1megabyte = 1,000kilobyte GB : 1gigabyte = 1,000megabyte TB : 1terabyte = 1,000gigabyte c.f. word(단위) CPU가 한 번에 처리할 수 있는 데이터 크기. e.g. half word, full word(1배 크기), double word -> 현대 컴퓨터의 워드 크기는 대부분 32비트 또는 64비트이다. 이진법(binary) 이진수 표기 : 1000(2) 또는 0b1000 이진수의 음수 표현 2의 보수(two's complement) : 어떤 수를 ..

CS 2023.10.11

[Programmers] 게임 맵 최단거리 Java

https://school.programmers.co.kr/learn/courses/30/lessons/1844 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 ROR 게임은 두 팀으로 나누어서 진행하며, 상대 팀 진영을 먼저 파괴하면 이기는 게임입니다. 따라서, 각 팀은 상대 팀 진영에 최대한 빨리 도착하는 것이 유리합니다. 지금부터 당신은 한 팀의 팀원이 되어 게임을 진행하려고 합니다. 다음은 5 x 5 크기의 맵에, 당신의 캐릭터가 (행: 1, 열: 1) 위치에 있고, 상대 팀 진영은 (행: 5, 열: 5) 위치에 있는 경우의 예시입니다. ..

Algorithm 2023.10.10

[Web] Web Server 관련 개념

Application Programming Interface를 사용해서 PC나 스마트폰에서 동작하는 프로그램을 만들 수 있다. API 프로그램을 쉽게 제작할 수 있게 미리 만들어 놓은 것들의 모음. Client 다른 곳에 있는 단말에 데이터를 달라고 요청하는 프로그램 Server 다른 곳에서 요청받은 명령을 처리해 주는 프로그램 프로그램을 인터넷에 연결하기 위해서는 단말에 Network Card(or Ethernet Card)가 있어야 한다. 두 개의 서로 다른 단말에 모두 네트워크 카드가 들어 있다면 클라이언트, 서버로 사용할 수 있다. Server : port를 지정하여 요청받을 수 있다. Client : 서버가 지정하는 port로 접속하게 된다. port 단말에 접속하기 위한 논리적인 접속 위치 W..

CS 2023.10.10

[Naver API] 검색 API 사용해보기

https://developers.naver.com/docs/serviceapi/search/blog/blog.md#%EB%B8%94%EB%A1%9C%EA%B7%B8 검색 > 블로그 - Search API 검색 > 블로그 블로그 검색 개요 개요 검색 API와 블로그 검색 개요 검색 API는 네이버 검색 결과를 뉴스, 백과사전, 블로그, 쇼핑, 영화, 웹 문서, 전문정보, 지식iN, 책, 카페글 등 분야별로 볼 수 developers.naver.com 위의 공식 문서를 참고한다. curl "https://openapi.naver.com/v1/search/blog.xml?query=%EB%A6%AC%EB%B7%B0&display=10&start=1&sort=sim" \ -H "X-Naver-Client-Id..

Project 2023.10.09