-
[Ajax] status 200인데 parse error..?
status 200 에 parser error.. $.ajax({ url: type: data: JSON.stringify(date) , contentType: "application/json; charset=utf-8;", dataType: "json", success:function () { alert("추가 성공"); }, error: function (error,textStatus) { console.log(error); console.log(textStatus); } }) RestController 에서 @RequestBody 어노테이션을 이용하여 dto값을 받아 create 하는 경우에서 statuscode=200 으로 정의후 반환하였는데.. 서버에는 create가 되고있음에도 불구하고 cli..
spring Issue
2021.03.02
-
모델링 IE 표기법 _ 객체 다중성 표기법
IE 노테이션 표기법 실선과 점선의 관계 (식별과 비식별자) 실선 : A가 없으면 B가 존재할 수 없는 관계 점선 : A가 없어도 B가 존재할 수 있는 관계. 추가 예시 수강내역의 입장에서 보면 학생이 없으면 존재의 의미가 없으므로 실선이 적절하다. 학생 입장에서 보면 학과 없이도 존재 할 수 있다. 이처럼 종속되지 않고 독립적으로 존재할 수 있으면 비 식별 관계 (점선) 이다. Optional 과 Mandatory 관계 Optional : 동그라미와 | 표시 된 반대 편 개체가 선택적으로 있어도 없어도 되는 존재임을 나타낸다. Mandatory : | 표시 된 반대 편 개체가 반드시 존재함을 나타낸다. 추가 예시 학생 관점 : | 과 O 가 표시된 반대편 개체를 보면, 학생은 이동을 할 수 도 없어도 ..
DataBase
2021.07.13
-
제네릭 타입의 컴파일 영향
사전학습 : Generic , 배열과 제네릭의 차이 Generic 재너릭이라는 용어는 포괄적인 이라는 뜻으로, 클래스 내부에 사용할 데이터 타입을 외부에서 지정하는 기법을 의미한다. 다이아몬드 표기법을 사용한다. (ex. ) 특징 같은 구조를 갖는 코드의 중복을 줄일 수 있다. 타입 안정성이 보장된다.(컴파일시 타입 체크가 가능하다) 타입 제한도 가능(extends, implement) 참조 타입(Wrapper Class)만 사용이 가능하다. 메소드 적용이 가능하다. 재너릭과 배열의 차이 1)재너릭은 불 공변, 배열은 공변 이다. 공변 = "자기 자신과 자식" 객체로 타입 변환을 허용해주는 것. 불 공변 ="자기 자신" 을 제외한 타입 변환이 허용되지 않는 것. __ 제너릭의 타입 안정성이 보장되는 원리..
JAVA
2021.04.10
-
정규화와 반정규화
정규화 정규화 배경 한 릴레이션에 여러 엔티티의 애트리뷰트들을 혼합하게 되면 정보가 중복 저장되며, 저장 공간을 낭비하게 된다. 또한 중복된 정보로 인해 갱신 이상이 발생하게 된다. 동일한 정보를 한 릴레이션에는 변경하고, 나머지 릴레이션에서는 변경하지 않은 경우 어느 것이 정확한지 알 수 없게 된다. 이러한 문제를 해결하기 위해 정규화 과정을 거치는 것이다. ※ 갱신이상 삽입 이상 원하지 않는 자료가 삽입되거나 또는 삽입하는 자료가 부족해 삽입이 되지 않아 발생하는 문제점. 삭제 이상 하나의 자료만 삭제하고 싶지만, 그 자료가 포함된 튜플 전체가 삭제됨으로 원하지 않는 정보 손실이 발생하는 문제점. 갱신 이상 정확하지 않거나 일부의 튜플만 갱신되어 정보가 모호해지거나 일관성이 없어져 정확한 정보 파악이..
DataBase
2021.04.28
-
별 찍기-19 Java
https://www.acmicpc.net/problem/10994 10994번: 별 찍기 - 19 예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요. www.acmicpc.net 먼저 n이 무엇과 관련이 있을까 생각해보면 각 별이 출력되는 line과 관련 됨을 알 수 있다. n=2이면 5줄 n=3이면 9줄 1 ,5 ,9, 13 ..... 4씩 차이가 나는 것을 알수 있다. 그러면 등차수열로 인하여 1+4(n-1) 등식이 나오고 4n-3개의 줄이 출력이 된다. 그리고 난후 별들의 각 라인을 출력하는 규칙이 있나 생각해보았지만 엄청나게 장황한 코드가 나와버렸다.if 문이 난무하고 조금은 지저분한 코드가 나왔다. 가만보니 규칙이 존재하는 것 같아 보이는게 n이 1씩 늘어갈 수록 n-1에서 출력된 *들에 겉에..
백준
2020.12.12
-
프로그래머스
2023.06.09
백준 - 파일 합치기3
문제 설명 파일을 모두 하나의 파일로 합치려고 한다. 단 파일을 합치는데 비용이 발생한다. a,b두개를 선택하여 합치면 각 값의 합으로 비용을 산정한다. 파일을 합칠 때 발생하는 최소비용을 구하는 문제이다. 주의사항 두 파일의 대한 값이 k개 백만개이고 각 요소의 최댓값은 만이다. 각 요소의 합이 백억까지될 수 있으므로 int자료형은 21억이라 overflow가 발생하니 타입에 주의해야 한다. 해당 문제에서 합치는 비용을 최소로 만들기 위해 작은 값끼리 먼저 더해가야 한다. 왜냐하면 이미 비싼 비용을 가진 파일이 점차 누적되기 때문에 큰 값은 계속 누적해서 더해가기 때문에 최소가 될 수 없다. 풀이 import java.util.Arrays; import java.util.PriorityQueue; im..
-
프로그래머스
2023.06.08
프로그래머스 - 과제 수행하기
문제 설명 과제를 진행하려 한다. 과제를 하던중 새로운 과제가 나오면 새로운 과제를 먼저 해야한다. 과제를 끝냈을 때, 잠시 멈춘 과제가 있다면, 멈춘 과제를 진행한다. 또한 멈춘 과제를 진행 중 새로운 과제가 출현하였을 때 새로운 과제를 먼저 해야한다. 그리고 멈춘 과제가 여러개일 경우 최근 멈춘 과제를 먼저 진행한다. 주의사항 과제는 시간순으로 정렬된 상태가 아니므로 정렬한다. 과제를 진행하고 다음 과제 출현 시간 사이에 자투리 시간이 있다면 멈춘과제를 수행해야한다. 즉, 멈춘 과제들을 모두 나중에 처리하는 것이 아님을 인지해야 한다. 여기서의 핵심은 자투리 시간의 과제를 수행해야 한다. 풀이 class Node{ String name; String startTime; int playTime; pub..
-
프로그래머스
2023.06.07
프로그래머스 - 요격 시스템
문제 설명 A나라가 B를 침략하기 위해 [s,e]까지 피해를 줄 수있는 미사일을 발포한다. B나라는 이 사실을 알고 A나라에서 발포한 미사일을 모두 격추 시키려 할 때, 최소한의 개수로 미사일을 격파시킬 수 있는 개수를 구하는 문제이다. 해당 문제는 한 점에서 최대 격추시킬 수 있는 미사일의 개수를 구하는 것이 핵심이다. 풀이 public int solution(int[][] targets) { Arrays.sort(targets,(a,b)-> { if(a[0] == b[0]){ return a[1]-b[1]; } return a[0] - b[0]; }); int answer=1; int end=targets[0][1]; for(int i=1; i
-
백준
2023.05.27
백준 - 우체국
문제 설명 각 마을들이 위치한 수직선 상에서 마을에 거주하는 각 사람들까지의 거리의 합이 최소가 되는 곳에 우체국을 건설하려고 할 때, 우체국을 세울 위치를 구하는 문제이다. 각 사람들까지의 거리의 합이 최소가 되는 곳에 우체국을 건설해야 하니 과반수가 넘는 인원에 대해서 최대한 가깝게 우체국을 건설하는 것이 좋다고 판단하였다. 우선 거리기반(오름차순), 인구수 기반(내림차순)으로 정렬한다. 하나씩 순회하면서 거쳐간 인원 인구수를 파악한 후 과반수 이상의 사람이 살고 있는 경우라면 해당 위치에 우체국을 건설한다. 단 원소의 값이 최소 + - 10억이므로 거쳐간 인구수에서 int 자료형은 이슈가 될 수 있으니 주의해야한다. 풀이 public static void main (String[] args) thr..
-
백준
2023.05.26
백준 - 꿀 따기
문제 설명 주어진 배열은 각 꿀의 양을 나타낸다. 벌 2마리 벌통 1개가 주어진다. 벌 2마리를 어느 위치에 위치시키고, 벌통을 벌2마리의 위치가 아닌 위치에 두면, 벌들이 벌통을 향해서 이동하게 된다. 단, 가는 길의 꿀을 따면서 간다. 이런 시스템으로 이동할 경우 벌들이 꿀을 딸 수 있는 가능한 최대 양을 구하는 문제이다. 처음 접근할 때 어떤 것을 고정시켜야 될까? 라는 질문에 답하지 못했다. 너무나도 애매했다. 왜냐하면 벌들의 위치와 꿀통의 위치에 따라 달라지는데, n^3 이 나온다고 생각했다. - 벌1,2 위치 선택 (n^2) - > 꿀통 위치 [i, n-1] (n) 그래서 시간초과가 분명하게 난다고 생각했다. 최대가 되는 경우를 생각해 볼때, “꿀벌 1 위치 < 꿀벌 2위치 시간초과 // 누적..
-
백준
2023.05.23
백준 - 항구
문제 설명 모든 화물을 크레인을 통해 옮기려고 한다. 크레인으로 모든 화물을 옮기는데 걸리는 최소 시간을 구하는 문제이다., 각 크레인은 최대로 화물을 올릴 수 있는 크기가 정해져 있다. 제한 범위 크레인의 총 개수 50 화물의 개수 10,000 가장 큰 화물을 들 수 있는 크레인이 가장 큰 적재화물을 드는 식이 최선이라고 생각했다. 크레인을 내림차순 적재 화물을 내림차순 주의사항 적재화물을 처음에 우선순위 큐로 소비하는 식으로 구현했다. 하지만 반례케이스가 존재했다. 크레인 = [10,8,1] 적재화물 = [10,8,7,1,1] - 단 2번 만에 옮김 수 있는 경우인데 적재화물 머리(7) 일 때, 다음 화물 1에서 크레인 1을 사용하여 옮길 수 있어 10,8,1을 걸리는데 1분이 걸리고 그다음 7,1,..
-
백준
2023.05.09
백준 - 톱니바퀴
문제 설명 톱니바퀴 4개가 주어진다. 톱니바퀴 하나를 회전화면 주의에 톱니바퀴가 돌아가게 된다. 주의의 톱니바퀴가 돌아가는 조건은 서로 맞물려있는 부분이 서로 다른 성질을 가지면 된다. 주어진 명령에 의해 해당 톱니바퀴를 돌리고 주어진 점수를 할당하여 점수를 구하는 문제이다. 1번 톱니바퀴의 12시방향이 N극이면 0점, S극이면 1점 2번 톱니바퀴의 12시방향이 N극이면 0점, S극이면 2점 3번 톱니바퀴의 12시방향이 N극이면 0점, S극이면 4점 4번 톱니바퀴의 12시방향이 N극이면 0점, S극이면 8점 풀이 맞물려있는 부분은 배열의 2번째 칸 6번째 칸이다. 하지만 맨 끝에 위치한 톱니바퀴는 왼쪽 또는 오른쪽에 아무것도 없다. 해당 문제에서 중요한 것은 전파이다. 전파력이 어디까지 도달할 수 있는지..
-
백준
2023.05.04
백준 - 철로
문제 설명 n명의 각 사람의 사무실 위치와 집 위치가 주어진다. 임이의 두점 A,B를 잊는 철로를 만들 떄 선분에 포함되는 사람의 수가 가장 많은 값을 출력하는 문제이다. 임의의 선분 L을 A=10, B=40일 때 4명의 사람이 포함되어 최댓값은 4가 된다. 풀이
-
백준
2023.05.02
백준 - 순회강연
문제 설명 강연날짜를 잡아 최대 수익을 얻을 수 있을 값은 무엇인지 구하는 문제이다. 단, 강연은 하루에 한번만 가능하다. 풀이 우선순위에 이익이 큰 순서대로 담고 현재 마감일자를 기준으로 강의를 담아낼 수 있는지 체크한다. 마지막 날짜에 최대한 큰 이익을 낼 수 있는 강의를 하는 것이 최대 수익을 얻을 수 있다. 만약 같은 데드라인을 가지게 되고 2번쨰로 큰 수익구조를 가지고 있다면 데드라인 -1 을 하며 강연이 비어있는 곳을 찾아낸다. 수익구조가 많으면 최대한 마감날까지 Lazy하게 미뤄야 최대 수익 구조를 가질 수 있게 된다. static class Node implements Comparable{ int profit,deadLine; public Node(int profit, int deadLin..
-
백준
2023.04.30
백준 - 문제집
문제 설명 가장 쉬운 문제부터 풀수 있는 과정을 출력하는 문제이다. 단, 문제마다 먼저 풀어야 하는 문제를 모두 풀어야 다음 문제를 풀어야 한다. 주의사항 문제는 난이도 순서로 출제되어 있다. 즉 1번 문제가 가장 쉬운 문제이고 N번 문제가 가장 어려운 문제가 된다. 이점을 생각하면 낮은 번호의 문제부터 풀어야 하므로 일반 큐가 아닌 우선순위 큐를 이용해야 한다. 풀이 public static void main(String[] args) throws IOException { BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(reader.read..
-
백준
2023.04.29
백준 - 가운데를 말해요
문제 설명 숫자를 입력 받을 때마다 중앙에 위치한 값을 출력하는 문제이다. min, max Heap 을 이용한다. maxHeap에는 작은 수를 min힙에는 큰 수를 넣어준다. (이름과 반대로 된 value들을 집어넣어준다.) 이렇게 minHeap에는 큰 값이 뒤로 밀려나고 maxHeap에는 작은값이 뒤로 밀리게 되면서 중앙값을 minHeap의 머리 또는 maxHeap 머리에 위치하게 된다. 그러면 이제 두 힙중에 어떤게 중앙값인지 선별해야 한다. 두 heap size()를 고르게 분포하기 위해 같은 Heap 사이즈를 갇는다면 max힙으로 몰아준다.(min으로 몰아줘도 상관없음) maxHeap이 더많다면 minHeap으로 이동한다. 이렇게 되면 maxHeap으로 이동한 혹시모를 큰수가 maxHeap에 머리..
-
프로그래머스
2023.04.25
프로그래머스 - 방의 개수
문제 설명 8가지의 방향 수가 입력으로 주어지고, (0,0)에서 출발하여 방향대로 움직여서 도형을 이루는 개수를 출력하는 문제이다. 도형이 만들어지는 경우는 해당 정점에 이미 다른 노드로부터 방문한 흔적이 있고 새로운 간선이 만들어지는 경우가 도형이 만들어지는 경우이다. (:= 사이클 형성) 주의사항 도형이 만들어지는 경우 엣지케이스가 존재한다. 교차점이 생성될 경우 이러면 도형은 위 아래 삼각형이 만들어지게 되는데 도형이 2개인지 1개인지 판별할 수 없게 된다. 맨 왼쪽 그림에서 해당 a로 다시 들어올때 방문했던 이력이 있고, 새로운 간선이 생겨 도형이 만들어졌다. 하지만 도형이 2개가 만들어 졌는지 1개가 만들어졌는지 알수 없다. 그래서 2배로 확대해서 보면 쉽게 2개가 만들어졌는지 1개가 만들어 졌..