본문 바로가기

전체 글

main(String[] args)의 의미 0. 요약 결론부터 말하자면, 프로그램을 실행하기 전에 외부에서 main 으로 값을 넣어주기 위한 코드다. 값을 입력하는 것이라면, Scanner나 BufferedReader을 쓰면 되지 않나? 질문이 나올 수도 있다. 순서가 다르다. Scanner나 BufferedReader는 main 실행 이후에 Console 대화 창으로 값을 입력 받는 방법이다. 하지만, main(String[] args)는 외부에서 값을 받고 같이 실행된다. 1. 사용해보기 우선 인자의 값을 출력할 코드를 아래와 같이 만든다. public class Test{ public static void main(String[] args){ for(String arg : args){ System.out.println(arg); } } } .. 더보기
Java 상수 final의 초기화 방법 0. 개요 final이 붙으면, 한 번 초기화가 될 경우 그 값을 바꾸지 못하는 상수가 됩니다. 예전에는 선언과 동시에 초기화를 해야 했지만, 현재는 그러지 않아도 됩니다. 이 글에서는 상수를 어떻게 하면 초기화 할 수 있을지에 대해 알아보겠습니다. 1. 정적(static) 상수 1.1 선언과 동시에 초기화 일반적으로 정적 상수를 사용할 때에는, 선언과 동시에 초기화를 합니다. public class Test { private static final int STATIC_VALUE = 5; } 현재 상태에서 선언과 동시에 초기화를 하지 않으면 에러가 뜹니다. 1.2 정적 블럭 정적 블럭을 통해서라면 멤버 레벨에서 초기화하지 않아도 됩니다. public class Test { private static fi.. 더보기
WebMvcTest Mockito given() Null 아래와 같이 TDD로 회원 가입 단위 테스트를 구현하고 있었습니다. @Entity @Builder @Getter @Setter @NoArgsConstructor @AllArgsConstructor(access = AccessLevel.PRIVATE) public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; private String password; public User copyOf(){ return User.builder() .name(this.name) .password(this.password) .build(); } public String toJson(.. 더보기
Mockito 학습 테스트 이 글은 Junit5를 기준으로 작성되었습니다. 0. Mockito란? 가짜 객체인 Mock을 만들어 테스트를 원활하게 도와주는 테스트 프레임워크. 스터빙으로 Mock을 조작합니다. 💡 스터빙(Stubbing) : Mock 객체의 행동을 조작하여 원하는 결과를 반환하도록 하는 행위 1. Mock 학습 테스트 1.1 mock mock을 이용해 Mock 객체를 만들 수 있습니다. import static org.mockito.Mockito.*; List mocks = mock(ArrayList.class); 💡 mock은 가짜 객체이므로, mock을 통해 만들어진 객체의 메소드는 동작하지 않습니다. 1.2 when when을 사용해 행동에서, thenReturn을 사용해 값을 리턴하도록 만들 수 있습니다. .. 더보기
스프링부트로 엘라스틱서치 쿼리 날리기 0. 개요스프링부트로 엘라스틱서치에 접근해서 쿼리를 날려보겠습니다.프로젝트 구조는 아래와 같습니다.└─es│└─src └─main ├─java │ └─com │ └─example │ └─es_springboot │ │ EsSpringBootApplication.java │ │ │ ├─config │ │ AbstractElasticsearchConfiguration.java │ │ ElasticSearchConfig.java │ .. 더보기
방향 이동 이중 반복문 추상화 해보기 현재의 좌표를 (i, j)라고 했을 때 상, 하, 좌, 우로 한 칸 움직이기 위해서는 다음과 같습니다. int[] dx = {-1, 1, 0, 0}; // 순서대로 상, 하, 좌, 우 int[] dy = {0, 0, -1, 1}; for(int d=0; d 0; i--) { for (int j = 0; j 0; j--) { ... } } 일반 반.. 더보기
백준 - 1339 단어 수학(Java) https://www.acmicpc.net/problem/1339 1339번: 단어 수학 첫째 줄에 단어의 개수 N(1 ≤ N ≤ 10)이 주어진다. 둘째 줄부터 N개의 줄에 단어가 한 줄에 하나씩 주어진다. 단어는 알파벳 대문자로만 이루어져있다. 모든 단어에 포함되어 있는 알파벳은 최대 www.acmicpc.net 그리디 문제입니다. 단어의 위치에 따라 가중치를 더해 가장 큰 가중치를 가진 문자부터 숫자를 할당하면 됩니다. 말로만 하면 이해가 힘드니 예시로 보겠습니다. /* 'A'~'Z'는 0~9의 숫자이므로 각 일의 자리라 생각했을 때, 아래 주석과 같은 다항식이 나옵니다. */ 10 ABB // 1. 100*A + 10*B + 1*B BC // 2. 10*B + 1*C BC // 3. 10*B + .. 더보기
백준 - 13614 행복 유치원(Java) https://www.acmicpc.net/problem/13164 13164번: 행복 유치원 입력의 첫 줄에는 유치원에 있는 원생의 수를 나타내는 자연수 N(1 ≤ N ≤ 300,000)과 나누려고 하는 조의 개수를 나타내는 자연수 K(1 ≤ K ≤ N)가 공백으로 구분되어 주어진다. 다음 줄에는 원생들 www.acmicpc.net 그리디 문제입니다. 문제를 요약하면, 구간(조)를 나눠 구간에서 최대와 최소의 합이 가장 작게 만들어야 하는 문제입니다. 즉, 문제 풀이 순서는 다음과 같습니다. 구간을 나눈다. 최대와 최소의 차이를 구한다. 1. 구간을 나눈다. 최소로 차이를 만들기 위한 구간은 간격이 가장 큰 쪽부터 나누면 된다는 것입니다. 아래 그림으로 보겠습니다. 예제 입력과 같이 n 크기가 5이고,.. 더보기