- Today
- Total
목록Category (320)
개발하는 고라니
16948번: 데스 나이트 게임을 좋아하는 큐브러버는 체스에서 사용할 새로운 말 "데스 나이트"를 만들었다. 데스 나이트가 있는 곳이 (r, c)라면, (r-2, c-1), (r-2, c+1), (r, c-2), (r, c+2), (r+2, c-1), (r+2, c+1)로 이동할 수 있다. 크 www.acmicpc.net [BFS] 최소 이동 횟수를 찾는 문제는 DFS보다 BFS가 확실하다. BFS는 모든 방향으로 한 칸씩 나아가지만, DFS는 한 방향으로 끝을 볼 때 까지 나아가기 때문이다. BFS를 이용해 N x N 맵이 있다고 가정하고 탐색할 수 있는 맵을 모두 탐색할 때 까지 도착점에 도달하지 못하면 -1을 반환한다. # Code import java.io.BufferedReader; import..
추상화 캡슐의 사용되는 공통분모를 잘라내는 것 (공통 분모의 캡슐화). 객체에서 공통된 행위나 속성을 추출하는 것 이라고 말할 수 있다. 상속 : 공통 부분을 뽑아 부모 클래스로 만드는 것 인터페이스 : 상속에서 나아가 개념(기능)만 추출하는 것 추상화로 만들어진 클래스는 다음 2가지의 중요한 특징을 갖는다. 추상 클래스는 뼈대이므로 절대로 실체화(객체화)되어서는 안된다. 공통 분모이기 때문에 그것만 가지고 객체화 하려고 했던게 아니므로 추상 클래스는 뼈대이므로 절대로 사용해서는 안되는 메서드를 가질 수 있다. 자식 클래스가 실수로라도 부모의 메서드를 사용하지 않게 하고, 동시에 반드시 자신의 것으로 구현해서 사용하라는 강제성 부여 가능 추상화는 Is A 상속이랑 비슷하나, 위의 2가지 특징이 다르다. ..
자바스크립트는 함수를 표현할 때 아래와 같이 표현하는 방법이 있다. var f1 = function (a) { } var f1 = (a) => { } ES6 (ECMAScript standard 6)에서 함수 작성을 위한 새로운 구문을 도입했다. 바로 Arrow Function이다. 화살표 함수에 대한 자세한 내용은 여기서는 다루지 않고 하단 링크를 통해 추후 자세히 공부해보도록 한다. 화살표 함수 - JavaScript | MDN 화살표 함수 화살표 함수 표현(arrow function expression)은 function 표현에 비해 구문이 짧고 자신의 this, arguments, super 또는 new.target을 바인딩 하지 않습니다. 화살표 함수는 항상 익명입니다. 이 함 developer..
[Spring Boot] WebSocket과 채팅 (1) 일전에 WebSocket(웹소켓)과 SockJS를 사용해 Spring 프레임워크 환경에서 간단한 하나의 채팅방을 구현해본 적이 있다. [Spring MVC] Web Socket(웹 소켓)과 Chatting(채팅) 기존 공부 용도의 게시판(?)에 여러. dev-gorany.tistory.com 이전 게시글에 이어 업로드되는 글 입니다. 저번에 순수 WebSocket만 가지고 간단한 채팅을 구현해보았다. Firefox, Chrome, Edge, Whale에서는 동작을 확인하였다. 하지만 모바일 크롬 브라우저와 IE에서는 WebSocket이 동작하지 않았다. 이처럼 기껏 채팅을 하려고 만들었더니 브라우저에서 지원을 안해준다. 조금 정리하자면, 1. 모든..
프로그래머스에서 Dev-Matching을 진행하고 아무 생각없이 깃허브에 올리는 실수를 했다. 이런 공개되지 않은 문제에 대해 외부로 유포하는 것은 자칫 일이 커질 수 있기 때문에 비영리적이라도 외부로 공개하는 것은 삼가하는게 좋다. 그래서 부랴부랴 깃허브에 올린 파일을 제거하는 법을 공부해보았다. 원격 저장소에 올린 파일 제거 git rm --cached [File Name] ex) git rm -r --cached .src/org/gorany/programmers/ABC git rm --cached .src/org/gorany/programmers/ABC/Solution.java -r : recursive 디렉터리 내 파일들을 삭제한다.
17616번: 등수 찾기 표준 입력으로 다음 정보가 주어진다. 첫 번째 줄에 세 정수 N, M, X가 공백을 사이에 두고 주어진다. (2 ≤ N ≤ 105, 1 ≤ M ≤ min(N(N-1)/2, 5×105), 1 ≤ X ≤ N) . 다음 M 줄에는 각각 두 정수 A, B가 주어 www.acmicpc.net [DFS] 등수를 알고싶은 x번째 정점에서 DFS를 2번 수행 해야하므로 인접리스트를 2개 만든다. 입력으로 A B가 주어졌을 때, list[B][0].add(A), list[A][1].add(B) 처럼 2개의 인접리스트를 만들면 된다. DFS의 내부는 간단하다. 기본적으로 int rank = 1을 갖고 인접리스트를 돌며 방문하지 않은 정점을 돌며 계속 그 값을 더해나간다. static int DFS..
16724번: 피리 부는 사나이 첫 번째 줄에 지도의 행의 수를 나타내는 N(1 ≤ N ≤ 1,000)과 지도의 열의 수를 나타내는 M(1 ≤ M ≤ 1,000)이 주어진다. 두 번째 줄부터 N개의 줄에 지도의 정보를 나타내는 길이가 M인 문자열이 주 www.acmicpc.net [DFS] 주어진 방향 지도가 있을 때, (1) 사이클이 있을 때, (2) 방향을 따라가다 벽에 막히는 곳이 있을 때 'SAFE ZONE'을 설치하면 된다. 주어진 예제 입력으로 지도를 그려보자. 편의상 U = 0, D = 1, L = 2, R = 3으로 표기하겠다. 1 2 2 2 1 3 2 0 3 3 3 0 위와 같이 지도가 주어지고, 빨간색은 사이클이 존재하는 곳, 파란색도 사이클이 존재하는 곳이다. 저 두 개의 사이클 중 ..
16437번: 양 구출 작전 2, 3, 5번에 사는 모든 양들은 1번 섬으로 갈 수 있지만 7번 섬에 사는 양들은 1번 섬으로 가기 위하여 6번 섬을 거쳐야 하는데 6번 섬에 사는 늑대들의 수가 7번 섬에 사는 양들의 수보다 많으므로 www.acmicpc.net [DFS] 예시에 주어진 테스트 케이스 이외에 내가 만들어본 테스트 케이스이다. 이 예제가 DFS에서 조건처리해야 할 모든 것을 담고있다고 생각된다. 처음에 시간초과가 나게 풀었던 것은 모든 리프노드들에서 시작해 정점 1(Root)로 도착하며 그 때의 양이 몇마리 살아갔는지를 계산했었다. 하지만 그렇게 하면 이미 방문했었던 정점을 또 다시 방문하는 일이 발생한다. 그래서 시간초과를 받은 것 같다. 그래서 트리라는 것을 감안해 후위 순회(좌 - 우..