문제 https://www.acmicpc.net/problem/23889 23889번: 돌 굴러가유 $M$번째 줄에 걸쳐 가장 많은 모래성을 지키기 위해 벽을 설치해야 할 마을의 위치를 오름차순으로 출력한다. 가장 많은 모래성을 지킬 수 있는 경우가 두 가지 이상 존재할 경우, 사전순으로 가 www.acmicpc.net 풀이 그리디 문제 돌은 오른쪽으로 굴러간다. 그렇다면 돌이 굴러가기 시작하는 위치부터 막는다면 더 많은 피해를 막을 수 있다. 따라서 돌이 굴러가기 시작하는 위치부터 그다음 돌이 굴러가는 위치 까지의 합이 가장 큰것부터 내림차순으로 정렬해주면 된다. 코드 import java.io.*; import java.util.*; class Main { public static void main(..
문제 https://school.programmers.co.kr/learn/courses/30/lessons/42579 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 해시맵과 리스트 배열을 사용하여 문제를 풀었다. 해시맵에는 장르에 대한 총 재생수를 넣어주었다. 그리고 리스트 배열을 만들어서 음악 고유 넘버와 재생 수를 저장할 리스트를 만들어 주었다. 총 재생수에 대해 정렬 후 리스트 배열에서 다시 정렬해주었다 코드 import java.util.*; class Solution { public ArrayList solution(String[] gen..
문제 https://www.acmicpc.net/problem/1986 1986번: 체스 첫째 줄에는 체스 판의 크기 n과 m이 주어진다. (1 ≤ n, m ≤ 1000) 그리고 둘째 줄에는 Queen의 개수와 그 개수만큼의 Queen의 위치가 입력된다. 그리고 마찬가지로 셋째 줄에는 Knight의 개수와 위치, www.acmicpc.net 풀이 단순한 구현문제 처음에는 그냥 단순하게 구현해서 풀었다. 너무 코드가 더러워서 다시 제대로 풀었다. 코드 정리해서 다시 푼 코드 import java.io.*; import java.util.*; class Main { public static class Point { int r; int c; public Point(int r, int c) { this.r = ..
기본키 : 테이블의 하나의 행의 여러 정보들 중 이를 식별해 낼 수 있는 정보 외래키 : 테이블간의 관계(참조하는 테이블과 참조되는 테이블 간의 관계) 식별 관계 부모 테이블의 기본키 또는 유니크 키를 자식 테이블이 자신의 기본키로 사용하는 관계 부모 테이블의 키가 자신의 기본키에 포함되기 때문에 반드시 부모 테이블에 데이터가 존재해야 자식 테이블에 데이터를 입력할 수 있다. 즉, 부모 데이터가 없다면 자식 데이터는 생길 수 없다. 식별관계는 ERD상에서 실선으로 표시한다 바퀴는 자동차 테이블에 데이터가 존재해야 생성할 수 있다. 즉, 부모 테이블에 자식 테이블이 종속된다. 상품테이블과 주문테이블의 기본키인 상품번호와 주문번호가 주문상품 테이블의 외래키가 되었다. 그리고 이 두 외래키는 주문상품테이블의 ..
상속관계 매핑 객체에서는 상속이라는 개념이 존재하지만, 관계형 데이터베이스는 상속 관계가 존재하지 않는다. 슈퍼타입, 서브타입 관계라는 모델링 기법이 상속과 유사하다. 상속관계 매핑 : 객체의 상속 구조와 DB의 슈퍼타입, 서브타입 관계를 매핑 각각의 테이블로 변환 : 조인전략 통합 테이블로 변환 : 단일 테이블 전략 서브타입 테이블로 변환 : 구현 클래스마다 테이블 전략 조인 전략 엔티티 각각을 모두 테이블로 만들고 자식 테이블이 부모 테이블의 기본 키를 받아서 기본 키 + 외래 키로 사용하는 전략 조회할 때 조인을 자주 사용한다. 주의할 점 : 객체는 타입으로 구분할 수 있지만 테이블은 타입의 개념이 없다. 따라서 타입을 구분하는 컬럼을 추가해야 한다. 여기서는 DTYPE 컬럼을 구분 컬럼으로 사용한..
다대일[N:1] JPA에서 가장 많이 사용하고, 꼭 알아야 하는 다중성이다. DB설계상 일대다에서 '다' 쪽에 외래키가 존재해야한다. 다대일 단방향 매핑 JPA의 @ManyToOne 어노테이션을 사용해서 다대일 관계를 매핑 @JoinColumn은 외래키를 매핑할 때 사용한다. name은 매핑할 외래 키의 이름. public class Member{ ... @ManyToOne @JoinCoulmn(name="TEAM_ID") private Team team; } 다대일 양방향 매핑 반대쪽에서 일대다 단방향 매핑을 해주면 된다.(객체기준으로, 컬렉션을 추가하자) 반대에서 단방향 매핑을 한다고 해서 DB테이블에 영향을 전혀 주지 않는다. 다대일의 관계에서 다 쪽에서 이미 연관관계 주인이 되어서 외래키를 관리하..
문제 https://www.acmicpc.net/problem/2404 2404번: 단위 분수로 분할 첫째 줄에 양의 정수 p, q, a, n이 입력된다. (1 ≤ p, q ≤ 800, 1 ≤ a ≤ 12000, 1 ≤ n ≤ 7) www.acmicpc.net 풀이 실버1문제인데 체감 난이도는 골드 1, 플레이다. 나한테는 짱어려웠다. 뭔가 백트레킹 문제라는 것은 문제를 보고 감이 왔는데 어떻게 백트레킹을 적용시킬지 매우 어려웠다. 즉, 백트레킹 함수의 매개변수를 어떻게 설정하느냐가 가장 중요한 문제였다. 우리는 p/q가 합이 되는 단위 분수들을 구해야한다. 즉, 우리는 백트레킹을 이용하여 단위 분수들의 합을 구해야 한다. 그러므로 매개변수를 다음과 같이 설정했다. back(단위분수의 합의 분자, 단위분..
문제 https://school.programmers.co.kr/learn/courses/30/lessons/42583 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 다리에 먼저 진입한 트럭이 먼저 빠지는 FIFO 구조를 가지고 있다. => 즉, Queue를 이용해야 한다. 트럭에 대해 알아야 하는 것은 트럭의 무개와 트럭이 다리에 언제 진입했는지이다. 따라서, 이를 표현하기 위해 Class를 하나 만들어 두었다. 풀이 같은 경우 while문을 이용하였다. cnt를 증가시키면서 bridge_length 만큼 지났을때 poll을 시키도록 만들어주었다...
문제 https://www.acmicpc.net/problem/25421 25421번: 조건에 맞는 정수의 개수 2개의 자릿수를 갖고 첫 번째 자리의 숫자와 두 번째 자리의 숫자의 차이가 2보다 작거나 같은 양의 정수 11, 12, 13, 21, 22, 23, 24, 31, 32, ... , 97, 98, 99가 A에 해당된다. 따라서 정답은 39이다. www.acmicpc.net 풀이 내가 안좋아하는 DP 문제였다. 그래서 그런지 풀이를 생각하는데 오래 걸렸다. (어려운 DP...) 문제는 매우 단순하다. n 자릿수인 숫자에 대해 각자리수가 0이 아니고 이웃한 숫자끼리 2 이하의 차이만 나는 숫자의 개수를 구하는 문제였다. dp 배열을 설정하는데 어려움을 겪었는데 맨 앞자리수를 기준으로 하려고 해서 어..
문제 https://school.programmers.co.kr/learn/courses/30/lessons/131533 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 코드 SELECT PRODUCT_CODE, SUM(SALES_AMOUNT)*PRICE AS SALES FROM PRODUCT P INNER JOIN OFFLINE_SALE OS ON P.PRODUCT_ID = OS.PRODUCT_ID GROUP BY PRODUCT_CODE ORDER BY SALES DESC, PRODUCT_CODE ASC;