분류 전체보기 117

백준1922 네트워크 연결 - C++

네트워크를 직접 연결(!!)하는 아주아주 어려운 문제이다... 모든 컴퓨터가 직간접적으로 연결되어 있어야 하고 심지어 그 비용이 가장 적어야 한다.(속도는 상관 없나보다) 비용이 가장 적게 모든 노드를 연결하기만 하면 되므로 최소 신장 트리(MST: Minimum Spanning Tree)를 이용하여 트리 모양으로 고리가 생기지 않도록 연결해준다. (고리가 생기는 경우는 고리가 생기지 않는 경우보다 항상 비싸다) 우리는 MST 알고리즘 중 크루스칼 알고리즘(Kruskal's algorithm - Wikipedia)을 이용한다. 1. 가장 비용이 작은 간선부터 연결한다.(UNION FIND) 2. 같은 그룹에 속할 경우 연결하지 않는다. 간단한 그리디 알고리즘이다. 이 때 MST 가 항상 최소비용인 것은 ..

알고리즘 2023.04.02

백준1916 최소비용 구하기 - C++

A -> B 로 가는 최소비용을 구하면 된다. A -> B 로 갈 수 있는 경우만 입력으로 주어진다는 조건이 있으므로 최소 비용 구하는 것만 신경쓰면 된다. 여기서 버스 비용은 0 이상이므로 버스를 이용할수록 손해이므로 버스는 최대 N-1 번 이용할 것이고, 한 번 타는데 최대 비용은 10^5 이고 N 은 10^3 이므로 최대 나올 수 있는 비용은 10^8 이므로 int 로 처리한다. #include #include #include #include using namespace std; int N, M, s, e, c; int start_city, end_city; vector edge[1001];//[도시번호] pair(비용,다음도시) int dijkstra(int start_city, int end_c..

알고리즘 2023.04.02

한국투자증권 KIS Developers Open API 로 투자앱 만들기 - 사전준비

KIS Developers (koreainvestment.com) KIS Developers 제휴사는 별도 제휴계약 후 사용 가능합니다. 요금안내: 기본적으로 제공하는 API 유량에 대해서는 0원이며 추가 유량을 원하시는 고객을 위하여 향후 별도 과금정책을 정하여 포털을 통해 공지 apiportal.koreainvestment.com 1. 한국투자증권에 로그인하고 KIS Developers 서비스 신청하기. 2. Python 설치하기 나는 법인 고객이 아니고 개인 고객이기 때문에 제휴를 하지 않고 일반 사용자로 활동하려고 한다. API 문서를 읽고 원하는 request 를 만든 뒤 테스트베드에서 테스트 한 후 이용하면 될 것 같다. 그 후 엑셀 혹은 스프레드시트에 연동하여 데이터를 자동으로 업로드하고자 ..

카테고리 없음 2023.03.27

백준1806 부분합 - C++

1 end 라면 길이가 1인 수열이 제일 짧은 것이므로 종료해도 이상이 없다. len 은 N이 최대 10만이 나올 수 있으므로 초기값을 10만 + 1으로 잡고, 만약 더 짧은 것이 발견되지 않았다면 만들기 불가능한 경우이므로 0을 출력한다. 위의 풀이 방법으로 반드시 해를 찾을 수 있을까? s,e 를 index로 보고 start, end 를 가장 짧은 수열의 인덱스로 보자. 슬라이딩 윈도우의 상황을 여섯 가지로 볼 수 있을 것 같다. 1. s, e 가 모두 start 보다 작을 경우 2. s 가 start 보다 작고 e가 start 보다 같거나 크고 end 보다 작은 경우 3. s 가 start 보다 작고 e가 end 보다 같거나 큰 경우 4. s 가 start 보다 같거나 크고 e 가 end 보다 작은..

알고리즘 2023.03.20

[Spring] Mockito - mockmaker subclassbytebuddymockmaker does not support the creation of static method 에러 해결

오늘은 스프링 테스트 코드를 짜면서 에러가 있었다. 별 건 아니고 Static Method 를 이용하고 있었는데 Mockito 를 사용하여 테스트 코드를 작성하는데 에러가 발생한 것이다. 제목과 같이 mockmaker subclassbytebuddymockmaker does not support the creation of static method 에러 메세지가 떴는데 이는 mockito 3.4 이상 버전에서 서로 충돌이 나는 dependency 가 있기 때문이라고 들었다. 해결 방법은 간단하다. maven 을 사용한다면 pom.xml 파일의 dependency에 gradle 을 사용한다면 build.gradle 파일의 dependencies에 각각 mock inline 을 추가해주면 된다. org.mo..

백앤드 2023.03.20

[자바스크립트] 배열 - 메서드

메서드 배열의 특징을 알았다면 이제 메서드를 알아봐야 할 차례이다. [자바스크립트] 배열 (tistory.com) [자바스크립트] 배열 배열의 특징 가장 먼저, 자바스크립트에서는 배열 타입이 없다! 이게 무슨 뚱딴지같은 소리냐 한 번 배열의 타입을 출력해 보자. export default function App() { const arr = []; const handleClickButton = () => { con forswdev.tistory.com 배열 타입에 기본적으로 지원하는 메서드들이 있다. 필요한 방식을 검색해서 쓰는 것이 좋을 것이다. Array의 메서드도 있고, prototype의 메소드도 있다. 원본을 건들지 않고 새로운 배열을 만드는 메서드는 *로 표시한다. ES6 이후 전부 사용 가능 ..

프론트앤드 2023.03.17

[자바스크립트] 배열

배열의 특징 가장 먼저, 자바스크립트에서는 배열 타입이 없다! 이게 무슨 뚱딴지같은 소리냐 한 번 배열의 타입을 출력해 보자. export default function App() { const arr = []; const handleClickButton = () => { console.log('typeof Array: ', typeof arr); } return ( 타입버튼! ); } 큰 틀에서의 object가 아니라 진짜 타입이 object다. 하지만! prototype 언어의 특성상 내부 동작은 다를 수 있다. 실제로 객체는 property Key : property Value로 구성되어 있지만 배열은 Index와 value로 구성되어 있다. 그래서 값을 참조할 때 객체는 property Key로 ..

프론트앤드 2023.03.17

백준1516 게임개발 - C++

건물의 종류와 짓는 시간이 주어지고, 각 건물은 먼저 특정 건물이 지어지고 난 이후에나 지을 수 있다. 모든 건물 N개를 완성하는데 걸리는 최소 시간을 출력하면 되므로 일단 DP를 염두에 둘 수 있다. 명령을 내리고 일꾼이 이동하는 시간은 걸리지 않으므로 건물을 짓는 시간만 계산할 수 있고 건물마다 번호가 있으므로 간편하게 DP로 저장할 수 있을 것으로 기대한다. 여기서 두 번째 조건이 걸린다. 특정 건물이 지어지고 난 이후에나 지을 수 있는 건물들이 있는데, 여기서 문제에 나오지 않았지만, 여러 개의 건물이 필요한 경우가 있을 수도 있으므로 이런 경우에도 통과할 수 있도록 indegree를 센다. indegree는 자신에게 들어오는 경로의 개수를 의미하는데, 1, 2 번이 지어지고 난 이후 3번을 지을..

알고리즘 2023.03.15

[Spring] @SuperBuilder 에러, Builder 를 찾지 못했습니다 에러

오늘은 또 기가 막힌 에러를 겪었다. Spring에서 extend를 받아 사용할 때, 상위의 Builder annotation을 이용하고 싶은데 갑자기 웬 builder 를 찾지 못했다는 에러가 떴었다. 이는 원래는 잘 빌드되던 소스였는데 갑자기 떠서 굉장히 당황스러운 에러였었다. 하지만 SuperBuilder 에 문제가 직접 있는 것은 아니라고 생각했고, @Repository 어노테이션을 단 DAO에 문제가 있다고 판단했다. DAO를 다시 자세히 보니 @Repository는 문제가 없었고, MyBatis와 연결되는 @Mapper에 문제가 있었다. import com.mapstruct.Mapper; import org.springframework.stereotype.Repository; import or..

백앤드 2023.03.13

자바스크립트 ES6 함수 구분 - 일반 함수, 메서드, 화살표 함수

ES6 이전에 함수는 모두 일반 함수로도 사용할 수 있고 생성자 함수로 호출할 수도 있었다. 그렇기에 사용에 따라 구분하기 힘들었을 뿐만 아니라 성능에도 그리 좋지 않았다. 왜냐하면 어떤 경우건 함수를 선언하면 항상 생성자와 prototype 이 따라오기 때문이었다. 따라서 ES6 이후 자바스크립트는 일반 함수와 분리되는 2가지 함수 유형을 추가하였고, 그것이 메서드와 화살표 함수이다. 이번에는 문법은 생략하고 메서드를 왜 사용하는지와 화살표 함수를 왜 사용하는지에 대해서 알아보자. 메서드 메서드는 본래 객체에 묶여서 사용되는 함수를 뜻하는 말이었지만 이제 메서드 표현으로 정의된 함수를 뜻하는 말로 바뀌었다. 메서드 표현은 다음과 같다. foo() { return 0 } function이나 화살표 함수를..

프론트앤드 2023.03.09