본문 바로가기

전체 글152

백준알고리즘 3052번 나머지 3052번 나머지 문제는 수학 문제입니다. 첫째 줄부터 열번째 줄 까지 숫자가 한 줄에 하나씩 주어집니다. 각 숫자를 42로 나누어서 나온 나머지 값들 중 중복을 제거하고 난 뒤, 서로 다른 나머지 값이 몇 개인지 출력해야 합니다. 백준알고리즘 문제에서는 알고리즘 분류를 배열로 했지만 컬렉션 Set을 사용해서 중복 숫자를 쉽게 제거 할 수 있었습니다. 소스 코드 (컬렉션) import java.util.HashSet; import java.util.Scanner; import java.util.Set; /** * 나머지 문제 * 알고리즘 분류 : 배열 * * @author jayden-lee */ public class Main { private static final int N = 10; private.. 2019. 7. 30.
백준알고리즘 1316번 그룹 단어 체커 1316번 그룹 단어 체커 문제는 문자열 처리 알고리즘 문제입니다. 여기서 말하는 그룹 단어는 동일한 문자는 연속적으로 나타나야 합니다. 예를 들어, "happy" 문자열은 p가 중복으로 나오지만 연속적으로 나오기 때문에 그룹 단어입니다. 반면에 "aba" 문자열은 맨마지막에 a 문자가 떨어져서 나타나기 때문에 그룹 단어가 아닙니다. 입력 값으로는 소문자 알파벳만 나오기 때문에 알파벳 숫자만큼 크기의 visited 배열을 생성합니다. 문자열에서 문자 하나씩 순회하면서 이전에 나타났는지 체크합니다. 처음으로 나타난 문자라면 일단 변수에 저장하고, 다음 문자와 비교해서 중복인지 체크합니다. while (i < (arrWord.length-1)) { if (character != arrWord[++i]) { .. 2019. 7. 30.
Spring 파일 업로드 구현 및 파일 크기 설정 파일 업로드 컨트롤러 생성 @Controller @Slf4j public class FileUploadController { public static final Path path = Paths.get(System.getProperty("user.home"), ".upload"); @GetMapping("/form") public String form() { return "form"; } @PostMapping("/upload") public String upload(@RequestParam("file") MultipartFile multipartFile) { log.info("upload"); File targetFile = new File(path.resolve(multipartFile.getOrigi.. 2019. 7. 26.
ServletContextListener 이벤트 처리 ServletContextListener 인터페이스 스프링 웹 애플리케이션 컨텍스트의 실행 시점과 종료 시점 이벤트를 리스닝 하는 인터페이스이다. public interface ServletContextListener extends EventListener { public default void contextInitialized(ServletContextEvent sce) { } public default void contextDestroyed(ServletContextEvent sce) { } } ServletContextListener 메서드 contextInitialized : 애플리케이션이 시작될 때 호출되는 메서드 contextDestroyed : 애플리케이션이 중지될 때 호출되는 메서드 Cus.. 2019. 7. 26.
스프링에서 Exception 핸들러 매핑하기 @ExceptionHandler WelcomeController 클래스에 있는 두 메서드는 모두 @ExceptionHandler 어노테이션을 붙였습니다. 첫 번째 handle 메서드는 CustomException 예외 처리 전용 메서드이며, 두 번째 handleDefault 메서드는 일반 예외 처리 메서드 역할을 합니다. 두 메서드 모두 에러 상황에 따라 맞는 렌더링 할 뷰 이름을 반환하고 있습니다. @ExceptionHandler는 특정 컨트롤러 안에서 예외가 발생한 경우에만 예외를 매핑하는 문제점이 있습니다. @Controller public class WelcomeController { @ExceptionHandler(CustomException.class) public String handle(C.. 2019. 7. 25.
Thymeleaf 템플릿 엔진에서 로케일 텍스트 메시지 처리 로케일 관련 텍스트 메시지 파일 생성 로케일 관련 텍스트 메시지 파일은 외부화 해서 웹 페이지와 독립적으로 개발하는 것이 효율적입니다. 스프링은 MessageSource 인터페이스를 구현한 메시지 소스로 텍스트 메시지를 해석할 수 있다. messageSource를 Bean으로 등록하면, DispatcherServlet이 자동 감지하여 등록합니다. MessageSource 인터페이스의 구현체인 ResourceBundleMessageSource 클래스는 로케일마다 따로 리소스 번들을 생성하고 이를 이용하여 메시지를 해석합니다. @Bean public MessageSource messageSource() { ResourceBundleMessageSource messageSource = new ResourceB.. 2019. 7. 25.
Klaytn 블록체인 애플리케이션 만들기 예제 Klaytn 블록체인 애플리케이션 예제 Klaytn 테스트넷 Baobab에 간단한 블록체인 애플리케이션을 만들어보는 예제 덧셈 예제 프로젝트로 주어진 시간 안에 덧셈 문제의 정답을 맞추면 클레이를 지급 받는다. 예제 프로젝트는 인프런 강의를 학습하고 정리한 것입니다. 자세한 설명은 인프런 강의를 참고해주세요. 개발 환경 설정 Node.js 설치 npm install Install Truffle sudo npm install -g truffle@4.1.15 Git 설치 Visual Studio Code 설치 소스코드 가져오기 git clone https://github.com/jayden-lee/klaytn-example.git Baobab 테스트넷 계정 생성 Klaytn TestNet에서 계정을 생성한다.. 2019. 7. 25.
Thymeleaf 에서 현재 로케일 값 출력하기 쿠키값에 따라 로케일 해석 CookieLocaleResolver 클래스는 사용자 브라우저의 쿠키값에 따라 로케일을 해석한다. 해당 쿠키가 없으면, accept-language 헤더로 기본 로케일을 설정한다. LocaleChangeInterceptor 클래스는 Http 요청에 특정한 매개변수 값이 존재하는지 확인하고, 해당 값으로 사용자 로케일을 변경한다. @Configuration public class WebMvcConfiguration implements WebMvcConfigurer { private static final Locale DEFAULT_LOCALE = new Locale("en"); @Override public void addInterceptors(InterceptorRegistry.. 2019. 7. 25.
JDBC 드라이버에서 MySQL 데이터베이스 문자 인코딩 설정 JDBC 드라이버를 이용해서 MySQL 데이터베이스에 연결할 때, 프로퍼티에 따로 값을 설정하지 않으면 문자 인코딩(characterEncoding) 값은 자동으로 감지합니다. 연결 프로퍼티에 문자 인코딩 설정 Properties properties = new Properties(); properties.put("user", "USER_NAME"); properties.put("password", "PASSWORD"); properties.put("characterEncoding", "UTF-8"); Connection connection = DriverManager.getConnection("JDBC_URL", properties); MySQL to Java Encoding Name Translatio.. 2019. 6. 23.