전체 글 464

HackerRank : Sherlock and Anagrams (Java)

문제 링크 The problem link : Sherlock and Anagrams 문제 요약 n개의 문자열이 주어졌을때, 각 문자열마다 애너그램을 통해 서로 같은 문자열을 만들 수 있는 쌍의 개수를 찾으세요. (* 애너그램 : 재배열을 했을때 다른 뜻의 문자를 만듦) 애너그램의 예시는 다음과 같습니다. s = mom [m,m] [mo,om] -> 2개의 정답 문제 풀이 핵심 코드는 다음과 같습니다. public static void add(HashMap hm, String s){ // 3 char a[] = s.toCharArray(); Arrays.sort(a); // (1) ns = new String(a); hm.putIfAbsent(ns,0); // (2) hm.put(s, hm.get(ns)+..

Docker compose 명령어

분류 명령어 설명 실행 docker-compose up - docker-compose.yml에 정의된 서비스들을 시작하거나 이미 동작중이었다면 재시작 - 단, 이미 돌아가고있던 서비스에 대해서 docker-compose.yml에서 변경된 사항이 없다면 재시작하지 않고 별 다른 변화를 주지 않음 docker-compose run - 새로운 컨테이너를 생성하여 시작 - 때문에 '일회성' 또는 '특별' 작업을 위해 실행하는 것을 권장. - 추가로 실행하고자 하는 특정 서비스 이름이 요구됨. docker-compose start - 중단됐던 컨테이너를 시작 (새로운 컨테이너 생성 X) - 이미 동작되고 있던 컨테이너라면 영향 없음 docker-compose restart - 중단됐던, 또는 이미 동작되고 있던 ..

LeetCode 771. Jewels and Stones (Java)

문제 링크 The problem link : Jewels and Stones - LeetCode 문제 요약 보석의 종류가 담겨진 String 타입의 변수, jewels가 있습니다. 돌의 종류 가 담겨진 String 타입의 변수 stones가 있습니다. 가지고 있는 돌의 종류 중, 총 몇개의 보석 종류가 있는지 확인하세요. 문제 풀이 class Solution { public int numJewelsInStones(String jewels, String stones) { String[] jTemp = jewels.split(""); String[] sTemp = stones.split(""); int ans = 0; for(int i=0; i

NPE(Null Pointer Exception)를 방지하는 방법

NPE(Null Pointer Exception)란? Null Pointer Exception의 줄임말로, null인 객체를 참조하려고 할 때 발생하는 Exception이다. 좀더 정확히 말하자면 java의 데이터 타입중 기본 타입(primitive type)과 참조 타입(reference type)이 있다. 기본 타입의 대표 예시로는 int가 있고, 참조 타입의 대표 예시로는 String이 있다. 참조 타입은 객체의 생성 이전에는 할당된 메모리 주소가 없는 null을 참조하는 변수이며, 이때 할당된 주소가 없는 null 상태의 변수를 가지고 작업을 진행하다면 NPE를 맞딱뜨리게 된다. 간과하기 쉬운 예외 물론 NPE를 처리 안한다고 당장 서비스가 안돌아가는건 아니다. 하지만 매번 불필요한 NPE로 st..

HackerRank : Largest Rectangle

Largest Rectangle | HackerRank Given n buildings, find the largest rectangular area possible by joining consecutive K buildings. www.hackerrank.com 문제 요약 건물의 갯수와 각 건물의 높이가 주어집니다. 일렬로 나열된 건물에서 안정적인 사각형 지대를 찾으려고 합니다. 사각형의 값은 아래 공식으로 구합니다. k * min(h[i], h[i+1], ... , h[i+k-1]) 쉽게 말해 가장 큰 넓이를 가진 사각형이 안정적인 사각형 지대가 됩니다. 핵심 요약 위 문제는 stack, queue의 유형으로 분리되어있지만, 단순 Brute Force를 통해서도 접근이 가능합니다. 핵심을 요약하면 다..

HackerRank : A Tale of Two Stacks

Queues: A Tale of Two Stacks | HackerRank Create a queue data structure using two stacks. www.hackerrank.com 문제 요약 2개의 Stack을 이용해서 Queue와 동일한 로직을 만들어 보세요. input 값으로 다음과 같이 입력이 가능합니다 q : 쿼리의 갯수 (최초에 1회 입력) 1 x : x를 큐에 저장 2 : 큐의 맨 앞 (가장 오래된 값)을 제거 3 : 큐의 맨 앞 (가장 오래된 값)을 출력 핵심 요약 해당 LeetCode의 문제와 흡사한 문제 유형입니다. 필요한 기능은 크게 다음 3가지로, 각각을 2개의 Stack을 이용해 구현합니다. enqueue : 큐에 값을 저장 dequeue : 큐의 첫 번째 값을 제거 ..

@JsonUnwrapped의 개념과 사용법

JsonUnwrapped란? 객체 내부의 프로퍼티(Property), 다시말해 객체 내부의 변수가 unwrapped 상태로 직렬화가 이루어져야할때 사용되는 어노테이션이다. 이해하기 쉽게 아래 예시를 봐보자. Department.java package com.logicbig.example; public class Department { private String deptName; private String location; ............. } Employee.java package com.logicbig.example; import com.fasterxml.jackson.annotation.JsonUnwrapped; public class Employee { private String name; ..

백준 24392번 영재의 징검다리 (C++)

24392번: 영재의 징검다리 첫 줄에 N과 M(1 ≤ N, M ≤ 1,000)이 공백으로 구분되어 주어지고, 그 뒤에는 N줄에 걸쳐 다리의 정보가 주어진다. 강화유리의 경우 1, 일반 유리의 경우 0으로 주어진다. www.acmicpc.net 문제 요약 1. 첫 줄에 N과 M, 영재가 건널 수 있는 다리 정보 N*M (1 h >> w; for(int i=0; i arr[i][j]; } } int main() { input(); for(int i=0; i=0; i--){ for(int j=0; j

@SpringBootTest, @AutoConfogureMockMvc, 그리고 @WebMvcTest

JUnit과 단위테스트 SpringBoot에서 JUnit를 사용하여 테스트 코드를 작성할때, 대표적으로 @SpringBootTest와 @WebMvcTest를 사용하는 경우가 많다. 처음에는 둘의 차이를 간단하게 @SpringBootTest는 모든 빈을 가져와서 속도가 느리고 @WebMvcTest는 필요한 빈만 가져와서 속도가 빠르다 정도로 이해를 했지만, 정확히 개념을 이해하지 못하고 사용한 탓에 테스트 케이스 작성 실패를 겪은적이 있었다. 내가 쓴 테스트 케이스가 어떤 상황에서, 무엇을 목적으로 돌아가는 테스트 케이스인지를 보다 정확히 이해하기 위해 개념을 정리한다. @SpringBootTest + @AutoConfigureMockMvc 1) 특징 - 프로젝트 내부에 있는 스프링 빈을 모두 등록하여 테..