백준 알고리즘 - 아기상어

문제의 여러 조건들이 있는데 큰틀에서는  먹이를 먹을 수 없을 때 까지 BFS를 돌린다. 하지만 곤란했던 조건은 아래 조건이다. 1. 거리가 같은 먹이의 경우 y, x 값이 작은 먹이를 먹는다. ex) 3 * 3 1 0 1 0 9 0 1 0 1  의 경우 거리 2의 먹이는 (0,0), (0,2), (2,0) , (2,2) 총 4개 거리가 모두 2인 경우 y값과 제일 작은 먹이는  (0,0) , (0,2) 총 2개 이 경우 x값이 제일 작은 먹이를 먹는다. 바로 (0,0)을 먹는다. 내가 시도한 방법. 현재 아기상어 사이즈에서 먹을 수 있는 모든 먹이를 거리 순으로 우선순위 큐에 넣는다. 거리가 제일 가까운 먹이들을 우선순위큐에서 꺼내면서 다시 리스트에 담는다. 거기서 y, x축이 제일 작은 먹이를 골라서 먹인다. import java.util.*; public class Main {     static int[] dy = {-1, 0, 0, 1};     static int[] dx = {0, -1, 1, 0};     static int N;     static Queue<Graph> queue = new LinkedList<>();     static class Pair implements Comparable<Pair>{         int y;         int x;         int distance;         public Pair(int y, int x, int distance) {       ...

정렬 알고리즘(Bubble, Insertion, Selection, Merge, Quick) Feat. Java

이미지
요즘, 프레임워크나 라이브러리에 대한 공부위주로 하다보니까 기본기가 많이 부족하다고 느껴서 정렬알고리즘을 공부하고 한 번 정리해보았다. 1. Bubble 시간복잡도 O(n²), 가장 기본적인 정렬 알고리즘. 시작 :   [ 5, 2, 4, 3, 1] 1회전 : [ 2, 4, 3, 1, 5] 2회전 : [ 2, 3, 1, 4, 5] 3회전 : [ 2, 1, 3, 4, 5] 4회전 : [ 1, 2, 3, 4, 5] 2. Selection 시간복잡도 O(n²), 가장 작은 값 차례대로 배열의 맨 마지막으로 보낸다. 시작 :    [ 5, 2, 4, 3, 1 ] 1회전 :  [ 5 , 2, 4, 3, 1 ] => [ 1 , 2, 4, 3, 5 ] => i 는 0, min_Val 은 4 ----> swap( 0 , 4 ) 2회전 :  [ 1, 2 , 4, 3, 5 ] => [ 1, 2 , 4, 3, 5 ] => i 는 1, min_Val 은 1 ----> swap( 1 , 1 ) 3회전 :  [ 1, 2, 4 , 3 , 5 ] => [ 1, 2, 3 , 4 , 5 ] => i 는 2, min_Val 은 3 ----> swap( 2 , 3 ) 4회전 :  [ 1, 2, 3, 4 , 5 ] => [ 1, 2, 3, 4 , 5 ] => i 는 3, min_Val 은 3 ----> swap( 3 , 3 ) 3. Insertion 시간복잡도 최선의 경우에는 O(n) 인데 이미 정렬이 되어있는 경우이다. 나머지는 Bubble, Selection과 마찬가지로 O(n²)이다. 시작 :    [ 5, 2, 4, 3, 1 ] 1회전 :  [ 5, 2 , 4, 3, 1 ] => [ 2, 5, 4, 3, 1 ] => i 는 1 2회전 ...

Spring boot - ajax 통신시 발생하는 문제 - SOP(Same Origin Policy) Feat. Synology NAS

이미지
우선, SOP가 뭐냐? wiki 백과 왈 ~ In  computing , the  same-origin policy  is an important concept in the web application  security model . Under the policy, a  web browser  permits scripts contained in a first web page to access data in a second web page, but only if both web pages have the same  origin .  same-origin policy는 웹어플리케이션 보안 모델에서 중요한 개념이라고 한다. 웹 브라우저는 첫 번째 웹 페이지에 포함 된 스크립트가 두 번째 웹 페이지의 데이터에 접근하는 것을 허용하지만 두 웹페이지 모두 동일한 출처 를 갖는 경우에만 허용된다고 한다. 그렇다면 , 동일한 출처가 뭐냐? 프로토콜/호스트/포트 가 동일한가 라고 한다. 예를들어, http://abc.dfg.com/temp/index.html 과 동일한 출처를 알아보자. http://abc.dfg.com/temp/login.html    =>  동일한 출처. http://abc.dfg.com/temp2/fake.html   =>  동일한 출처. https://abc.dfg.com/temp/real.html    =>  프로토콜 이 다르다. 따라서 동일한 출처가 아니다. http://abc.dfe.com:123/temp/isReal.html   => 포트 가 다르다. 따라서 동일한 출처가 아니다. http://dfe.abc.com/temp/good.html   =>    호스트 가 다르다.  ...

ECMAScript6 - Object

이미지
Object에 대해서 공부해 본 것,, 1. 같은 키를 사용하는 경우 나중에 작성된 키값으로 대체된다. 2. Object에 function 작성의 차이 es5, es6 3-1. 프로퍼티 디스크립터 - Object 'book' 프로퍼티에 대해서 아래와 같은 속성을 포함하여 get, set 속성을 설정 할 수 있다. 3-2. get, set 속성 ==> ES5 get, set 속성으로 getter 와  setter를 정희 3-3. ES6에서 getter와 setter 선언 형태 4. Object.is()     ===           :  값과 값 타입을 모두 비교     ==             :  값 타입은 비교하지 않고 값만 비교     Object.is() :  값과 값 타입을 모두 비교    === , Object.is() 차이점은    +0 과 -0을 비교할 경우 ===는 true,  Object.is()는 false를 반환    NaN 과 NaN을 비교할 경우 === false, Object.is()는 true를 반환 5. assign(): 오브젝트 프로퍼티 복사  파라메터들은 enumerable 오브젝트여야 한다. null, undefined의 경우 프로퍼티 값으로만 복사가 가능하다. assign()의 필요성 let dup = sports; 의 경우 얕은 복사가 발생한다. dup과 sports는 같은 object를 바라보는 문제가 발생한다. dup의 프로퍼티 값을 변경할 경우 sports의 프로퍼티 값에도 영향을 끼친다. 이러한 문제를 해결하기 위해서 as...

Java EUC-KR text File Convert to UTF-8 text File

윈도우에서 euc-kr로 작성한 파일을 맥에서 열어보니 온통 ???천지라서 변환할 일이 있어서 그냥 끄적여봤다. 아래는 소스이다. 버퍼드리더를 euc-kr로 생성하여 한줄 씩 읽으면서 동시에 utf-8로 변환해서  utf-8로 생성해준 버퍼리라이터를 통해서 새로운 text파일에다가 써준다. import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; public class Convert { public static void main(String[] args ) throws IOException { String path = Convert. class .getResource( "" ).getPath(); BufferedReader br = new BufferedReader( new InputStreamReader( new FileInputStream( path + "개인가계부.txt" ), "EUC-KR" )); BufferedWriter bw = new BufferedWriter( new OutputStreamWriter( new FileOutputStream( "utf8.txt" ), "utf-8" )); String line ;         while (( line = br .readLine()) != null ) { //           System.out.println...

대학생 코딩 과제 대행 java, python, oracle 스물 여섯 번째

이미지
https://open.kakao.com/o/s3aMpbA 오라클 모델링하고나서 쿼리짜는 과제이다. 모델링이라고 하기도 웃기지만 ㅎㅎ 과제 요구사항이다. DROP TABLE ACCOUNT PURGE; DROP TABLE BRANCH PURGE; DROP TABLE CUSTOMER PURGE; DROP TABLE LOAN PURGE; DROP TABLE BORROWER PURGE; DROP TABLE DEPOSITOR PURGE; DROP VIEW ALL_CUSTOMER; CREATE TABLE ACCOUNT(     ACCOUNT_NUMBER VARCHAR2(20) PRIMARY KEY,     BRANCH_NAME VARCHAR2(20),     BALANCE NUMBER ); insert into account values('A-101','Downtown',500); insert into account values('A-102','Perryridge',400); insert into account values('A-201','Brighton',900); insert into account values('A-215','Mianus',700); insert into account values('A-217','Brighton',750); insert into account values('A-222','Redwood',700); insert into account values('A-305','Round Hill',350); select * from account; CREATE TABLE BRANCH(     BRANCH_NAME VARCHAR...

대학생 코딩 과제 대행 java, python, oracle 스물 다섯 번째

https://open.kakao.com/o/s3aMpbA 이번에는 지난번에 했던 파이썬으로 소켓통신을 하는 과제를 의뢰받았다. 소켓을 통해서 파일을 서버에 업로드 하는 간단한 과제였다. 먼저 서버 #-*- coding: utf-8 -*- import socket #서버 소켓 오픈 server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) port = 12345 server_socket.bind(("", port)) server_socket.listen(5) print ("TCP Upload Server Waiting for client on port " + str(port)) while True:     client_socket, address = server_socket.accept()     print("I got a connection from ", address)     req = client_socket.recv(1024)     print("Request :  ", req)     decodedReq = req.decode("utf-8")     print("decode : ", decodedReq)     fileTitle = decodedReq.split('!@#$%^&*')[0]     fileContent = decodedReq.split('!@#$%^&*')[1].encode("utf-8")     print('title : ', fileTitle)     print('content : ', fileContent)     uploadFile = open(fileTitle, "wb")     uploa...