지뢰찾기 게임을 제작한다고 가정하고, 각 사각형에 표시될 숫자를 입력하는 코드를 작성하시오. 출력 예시) 조건 사각형의 크기는 10x10 지뢰의 갯수는 10개로 가정하고, 임의의 위치에 놓여있다고 하거나 직접 위치를 지정해도 무관함 지뢰는 “ * ” 로 표시할 것. 나의 풀이 class Scratch { public static void main(String[] args) { Scratch a = new Scratch(); Cell[][] cells = new Cell[10][10]; for (int i =0; i
자바에서의 직렬화(Serialization)과 역직렬화(DeSerialization) 클래스를 만들 때, 해당 특정 클래스에서 사용될 객체를 만들 수 있으며 프로그램을 실행 / 종료하면 가비지 수집기 스레드를 통해 객체가 자체적으로 수거됩니다. 객체를 다시만들지 않고 해당 클래스를 호출하려는 경우 어떻게 될까요?? 이럴때 데이터를 바이트 스트림으로 변환하여 직렬화 개념을 사용합니다. 객체 직렬화는 객체의 상태를 바이트 스트림으로 변환하는데 사용되는 프로세스로, 디스크 / 파일로 유지되거나 네트워크 통신을 통해 실행중인 다른 Java 가상머신으로 전송될 수 있습니다. 역직렬화란 이러한 바이트 스트림을 다시 객체형태로 변환하는 작업을 말합니다. 생성된 바이트는 플랫폼에 독립적입니다. 그래서 한 플랫폼에서 직..
안녕하세요. 이전 포스팅에서 커스텀 어노테이션으로 Bean Validation 처리를 해보는 예제를 작성하여 포스팅하였습니다. https://sas-study.tistory.com/343 스프링 Custom Bean Validation 만들어서 사용해보기(어노테이션 @Email) 스프링 Bean Validation 이란?? 스프링에서는 JavaBean(getter와 setter를 가지고 있는 자바객체, 흔히 VO, DTO라고 부르는 것들)의 유효성 작업을 진행하기 위해 javax.validation 패키지 내에 있는 여러가지 유.. sas-study.tistory.com 그 와중에 response body에 에러메시지를 담는 과정에서 Errors 객체를 사용하여 DefaultMessage로 설정한 내용을..
스프링 Bean Validation 이란?? 스프링에서는 JavaBean(getter와 setter를 가지고 있는 자바객체, 흔히 VO, DTO라고 부르는 것들)의 유효성 작업을 진행하기 위해 javax.validation 패키지 내에 있는 여러가지 유효성 관련 클래스들을 활용할 수 있습니다. * 참고로 스프링 부트 2.3 버전 이후부터는 Spring Web 유효성에서 Validation 의존성이 따로 분리되어 별도로 Validation 의존성을 추가해야 javax.validation 패키지를 활용하여 여러가지 유효성 검사를 어노테이션을 통해 활용할 수 있습니다. 대표적으로 오늘 살펴볼 ConstraintValidator 인터페이스를 구현하여 아래와 같이 Email의 유효성 검사를 할 수 있는 Email..
스킬트리 문제 설명 선행 스킬이란 어떤 스킬을 배우기 전에 먼저 배워야 하는 스킬을 뜻합니다. 예를 들어 선행 스킬 순서가 스파크 → 라이트닝 볼트 → 썬더일때, 썬더를 배우려면 먼저 라이트닝 볼트를 배워야하고, 라이트닝 볼트를 배우려면 먼저 스파크를 배워야 합니다. 위 순서에 없는 다른 스킬(힐링 등)은 순서에 상관없이 배울 수 있습니다. 따라서 스파크 → 힐링 → 라이트닝 볼트→ 썬더와 같은 스킬트리는 가능하지만, 썬더 → 스파크나 라이트닝 볼트 → 스파크 → 힐링 → 썬더와 같은 스킬트리는 불가능합니다. 선행 스킬 순서 skill과 유저들이 만든 스킬트리1를 담은 배열 skill_trees가 매개변수로 주어질 때, 가능한 스킬트리 개수를 return 하는 solution 함수를 작성해주세요. 제한 ..
문제 설명 클래스 TreeNode가 다음과 같이 있을때 class TreeNode { int val; TreeNode left, right; public TreeNode(int x) { this.val = x; } } 다음과 같은 트리노드를 구현한 매개변수로 TreeNode 인스턴스를 받고 다음의 배열로 표현되도록 하시오. 결과 : [[33], [22, 44], [3, 26, 77], [55]] 나의 풀이 public List solution(TreeNode root) { List result = new ArrayList(); if(root == null) return result; Queue queue = new LinkedList(); queue.offer(root); while(!queue.isEm..
크레인 인형뽑기 게임 문제 설명 게임개발자인 죠르디는 크레인 인형뽑기 기계를 모바일 게임으로 만들려고 합니다. 죠르디는 게임의 재미를 높이기 위해 화면 구성과 규칙을 다음과 같이 게임 로직에 반영하려고 합니다. 게임 화면은 1 x 1 크기의 칸들로 이루어진 N x N 크기의 정사각 격자이며 위쪽에는 크레인이 있고 오른쪽에는 바구니가 있습니다. (위 그림은 5 x 5 크기의 예시입니다). 각 격자 칸에는 다양한 인형이 들어 있으며 인형이 없는 칸은 빈칸입니다. 모든 인형은 1 x 1 크기의 격자 한 칸을 차지하며 격자의 가장 아래 칸부터 차곡차곡 쌓여 있습니다. 게임 사용자는 크레인을 좌우로 움직여서 멈춘 위치에서 가장 위에 있는 인형을 집어 올릴 수 있습니다. 집어 올린 인형은 바구니에 쌓이게 되는 데,..
JPA 아키텍처에 대한 소개 이번 포스팅에서는 JAVA Persistence API의 핵심 클래스/인터페이스인 JPA의 구조에 대해서 알아보겠습니다. Java Persistence API(JPA)는 관계형 데이터베이스(RDBMS)객체를 자바 객체로 매핑하는 자바 표준 스펙입니다. 자바 객체를 데이터베이스 테이블로 변환하는 작업, 혹은 반대의 작업을 객체-관계 매핑(Object-Relational Mapping, ORM)이라고 합니다. JPA는 ORM에 대한 한가지 접근 방법중에서 하나입니다. JPA를 통해서 개발자들은 자바 객체 데이터를 데이터베이스 데이터로 매핑, 저장, 수정, 검색할 수 있습니다. JPA는 엔터프라이즈급 혹은 SE 버전에서도 사용할 수있습니다. JPA는 여러가지 구현체를 가지고 있는데..