반응형

분류 전체보기 316

[프로그래머스,자바] Level2: 숫자블록

문제분석: 블록을 다음과 같은 규칙으로 칠한다. N*2 , N*3, ...일경우 블록을 칠한다. 이미 블록이 칠해져있다면 덮어서 칠한다. 여기서 칠해야하는 블록의 갯수가 무려 10억개, 각기다른 블록의색깔은 천만개다. 잘못 구현하면 바로 효율성에러가 뜨기좋은 거대한 숫자다. 문제의 요구사항은 begin~ end 사이에있는 블록의 리스트다. 그러면 필시 begin~end 부터 돌릴 반복문 1개가 존재해야한다. 그렇다면 begin~ end의 블록의 색깔은 어떻게 구할까? 이 블록의 색깔은 제일 작은 소수로 나눈 몫이 블록의 색깔이된다. 제일 작은 소수를 구하는법은 에라토네스의 체를 사용한다. 여기서 주의해야할점은 리턴하는 몫의 값이 천만을 넘어가선 안된다. 블록이 천만개만 존재하기때문에 그 이상의 블록의색깔..

[프로그래머스 , 자바] Level2: N-Queen

문제분석: 길이가 N인 보드판에 N개의 퀸말을 서로 공격할수없는 상태로 만드는 형태의 갯수를 구하는문제다. 이 문제를 처음 접근할때 대부분의 사람들은 2차원 배열을 만들고 완전탐색을 진행할것이다. (본인도 2차원배열 만들어놓고 접근하니 뭔가 이상하게.. 산으로가는 느낌이 들엇다.) 이 방식으로 접근을 해서 푸는것도 하나의 방법이겟지만, 더 좋은 방법이 있다. 2차원배열을 1차원배열로 압축시켜버리는것이다. 어떻게 1차원 배열로 압축을 시킬까? 배열의 index를 행, 배열의 값을 열로 보는것이다. 예시로 들자면, 이 배열을 1차원으로 압축시키면 [1,3,0,2] 라는 값이 나온다. 이 압축시킨 배열로 백트래킹 기법을 사용하는것이다. 하지만, 퀸을 놓을수있는조건은 가로, 세로, 대각선이 겹치면 안된다. 여기..

[프로그래머스,자바] Level2: 하노이의 탑

문제분석 하노이의 탑 문제다. 하노이의 규칙은 한번쯤은 다 알것이다. 간단하게 하노이의 규칙의 갯수만 물어보면 매우 쉬운 문제가 되엇겠지만, 이동경로까지 전부 구해야한다. 즉, 하노이의 탑 알고리즘을 구해야한다. 하노이의 탑 알고리즘: 하노이의 탑은 N개의 원반을 끝지점에 옮기려면, 1.N-1개의 원반을 중간에 놓는다. 2. 가장큰 원반을 끝지점에 옮긴다. 3. 중간에 있는 N-1개의 원반을 끝지점에 옮긴다. 자 무엇이 보이는가 그렇다 DP(점화식)가 보인다. 즉 원반을 1-> 2-> 3 경로로 옮기려면, h(1,2,3,N) = h(1, 3, 2, n-1) {1번과정} + 1 {2번과정} + h(2,1,3) { 3번과정} 이 필요하다. 문제풀이 1 2 3 4 5 6 7 8 9 10 11 12 13 14 ..

프로그래머스 JAVA Level2: 3XN 타일링

문제분석 문제는 아주 심플하다. 가로 2 세로 1인 블록을 3XN타일에 몇개까지 완벽하게 가득 넣을수 있는지 묻는다. 문제 읽자마자 떠오르는게 '규칙찾기' 이다. 혹여나, 규칙을 찾으신분은 별탈 없이 이문제는 프리패스지만.. 못찾는게 대부분이다. 규칙을 찾기위해선 먼저 증거들을 수집해 보자. n=0 , 1 n=2 , 3 n=4 , 11 -> 홀수를 빼먹엇는데 홀수의 경우수는 완벽하게 가득 넣을수없으니 0개다. 저 3가지의 경우를 보고 규칙이 보이는가? 대부분 못찾는다.. n=6일땐 경우의수가 41이나온다. n=6인 예시도 있었다면 규칙을 쉽게찾앗겟지만 주지않는다. 만약 실제 코딩테스트문제라면 빠른 구글링을하자.,, 괜히 규칙찾는다고 시간낭비다. 필자도 고민해보다 구글링을 했는데, 규칙은 f(n)= f(n..

JPA 값타입

JPA 에서 쓰이는 값타입을 분류를 해보자. 엔티티 타입: • @Entity로 정의하는 객체 • 데이터가 변해도 식별자로 지속해서 추적 가능 • 예) 회원 엔티티의 키나 나이 값을 변경해도 식별자로 인식 가능 값 타입 : int, Integer, String처럼 단순히 값으로 사용하는 자바 기본 타입이나 객체 식별자가 없고 값만 있으므로 변경시 추적 불가 예) 숫자 100을 200으로 변경하면 완전히 다른 값으로 대체 엔티티 타입은 값타입이 여러개가 모여 생성된다고 보면된다. 여기서 값타입을 더욱 세부 분류해보자. • 기본값 타입 • 임베디드 타입(embedded type, 복합 값 타입) • 컬렉션 값 타입(collection value type 기본값타입 • 예): String name, int ag..

자바/JPA 2022.06.27

JPA : 상속관계 매핑

Java에선 부모클래스 와 자식클래스간의 상속관계라는것이 존재한다. 하지만, DB에선 상속관계가 없다. 비슷한 개념으로는 슈퍼클래스와 ,서브클래스 라는 개념이있다. 여기서 등장하는것이 JPA가 스프링단에 있는 상속관계와 DB단에있는 슈퍼,서브클래스 관계를 매핑해주는 기능을 지원해준다. @Inheritance 상속관계를 나타내려면, @Ingeritance 어노테이션을 사용한다. @Ingeritance는 부모에게만 붙는다. • JOINED: 조인 전략 • SINGLE_TABLE: 단일 테이블 전략 • TABLE_PER_CLASS: 구현 클래스마다 테이블 전략 상속을 받는전략은 이 3가지가 존재한다. 하지만, JOINED 전략만 사용하는걸 추천한다. 단일테이블 같은경우는 하위클래스의 모든 정보를 담기때문에 테..

자바/JPA 2022.06.15

JPA: 연관관계 매핑 (1:1 , 1:N, N:1, N:M)

데이터베이스에 테이블은 서로 연관관계를 가질 수 있다. 그러므로 우리가 Spring에서 다루는 Entity들 사이에서도 서로 연관관계를 명시해줘야한다. 만약, 연관관계를 매핑안하고 사용할경우 Team 테이블에 멤버가 하나들어가면, Member테이블에도 하나 더 추가해야하는 번거로움이 발생한다. DB는 매핑만해주면 알아서 넣어주기때문에 상관은없지만 객체의 연관관계는 그렇지않다. 그 관계를 명시해줄 어노테이션 4개를 이번포스팅에 남겨보려고한다. @OneToOne @ManyToOne @OneToMany @ManyToMany @OneToOne 1대 1 관계 매핑이다. 코드에서 보이는것과 같이 연관관계 매핑할시에 @JoinColumn이 사용되는데, 이것은 다른 테이블에 어떤속성과 연관을맺을지 그 이름을 정해주는 ..

자바/JPA 2022.06.14

JPA: 엔티티(Entity) 매핑

데이터베이스에 있는 테이블정보와 매핑하려면 Spring단에서 엔터티를 만들어 매핑해야만한다. 그 엔티티를 만들고 매핑하기위한 어노테이션은 다음과같다. • 객체와 테이블 매핑: @Entity, @Table • 필드와 컬럼 매핑: @Column • 기본 키 매핑: @Id • 연관관계 매핑: @ManyToOne,@JoinColumn ... @Entity • @Entity가 붙은 클래스는 JPA가 관리, 엔티티라 한다. • JPA를 사용해서 테이블과 매핑할 클래스는 @Entity 필수 유의사항 • 기본 생성자 필수(파라미터가 없는 public 또는 protected 생성자) • final 클래스, enum, interface, inner 클래스 사용X • 저장할 필드에 final 사용 X 사용법은 Member ..

자바/JPA 2022.06.14

리눅스/우분투 파일 압축하기(아카이브)

아카이브란? 본래 아카이브의 뜻은 , 개인 및 단체가 활동하며, 남기는 수많은 기록물 중 가치가 있는 것을 선별하여 보관하는 장소, 또는 그 기록물 자체를 이르는 용어. 유닉스/우분투에선 아카이브의 뜻은 '파일들을 모아 묶어서 하나로 만드는것 ' 압축하기로 조금 다르게 해석된다. 우리가 Java로 프로젝트를 만들고 패키징 할때 Jar 과 War중 하나를 선택한다. Jar은 'Java Archive Tool' 의 약칭이며, War은 'Web Application Archive' 의 약칭이다. 그래서 이번포스팅에선 리눅스/우분투 환경에서 압축할수있는 명령어를 소개하겠다. -----------------------------------------------------------------------------..

리눅스 2022.05.26

스프링 타임리프(Thymleaf) 한눈에 정리하기

타임리프를 사용하기전에 확인해야할 정보 1.타임리프 의존성이 제대로 주입되고 있는지 확인한다. 타임리프를 '제대로' 쓰려면 시작하기전에 타임리프가 제대로 설치되어있는지 확인하자. 2. Model에 대한 개념 스프링의 MVC 패턴이 여기서도 쓰인다. 타임리프는 View 와 Controller의 사이를 '동적'으로 연결해주는데 View의 정보를 Model에서 가져온다. 정보를 가져올때 Model의 'attributeName'을 통해 정보를 불러온다. 3.HTML태그 탄에 xmlns링크 걸어주기 모든 준비가 마쳤으면 이제 제대로 알아봅시다. -----------------------------------------------------------------------------------------------..

반응형