분류 전체보기
BOJ 5719 거의 최단 경로
BOJ 5719 거의 최단 경로
2021.05.27시작 https://lotuslee.tistory.com/137 본문을 참고하였습니다. 문제를 읽어보면 한가지 좋은 아이디어를 생각해볼 수 있었는데 구현이 쉽지 않았습니다. 아이디어는 비교적 간단합니다. 1. 다익스트라로 최단 경로를 구합니다. 2. 최단 경로들을 모두 제외 합니다. 3. 다익스트라로 다음 최단 경로를 구합니다. 그림으로 보면 다음과 같습니다. 각 순서는 그림에서 왼쪽부터 1, 2, 3으로 확인해 볼 수 있습니다. 소스코드를 우선 살펴보겠습니다. 코드 중에 preNodeCollections, ArrayList 를 선언해 두었습니다. 최소 비용을 가진 경로를 담아두기 위한 목적인데, 거리 값이 갱신 되면 왼쪽에 보이는 1번 경로가 clear 되고 2번 경로가 preNodeCollection..
다익스트라 X BOJ_4485_녹색옷입은애가 젤다지?
다익스트라 X BOJ_4485_녹색옷입은애가 젤다지?
2021.05.26시작 다익스트라 개념에 대해 정리한것을 포스팅 합니다. 다익스트라는 기본적으로 최단 경로로 많이들 알고 있지만, 최단 경로는 BFS 로도 접근할 수 있기 때문에 여기서 최소 비용 개념을 추가해주어야 합니다. 즉, 다이스트라는 최단 거리 + 최소 비용의 문제입니다. 조건 보통의 다익스트라의 문제 경우 아래 조건들을 만족합니다. 1. 방향 그래프 입니다. 2. 0 이상의 가중치 값을 가지고 있습니다 3. 사이클이 존재하지 않아야 합니다. 구현 (코드X) 다익스트라의 경우 BFS 개념에 그리디 알고리즘을 적용합니다. 덧붙이면, 최단 거리를 구하게 되지만 매 순간 가장 좋은 가중치 값을 선택하게 됩니다. 거리, 방문 여부 변수를 두어 다익스트라 알고리즘이 어떻게 동작하는지 살펴보겠습니다. 그림 처음 워크플로우는..
AWS redShift 실습하기
AWS redShift 실습하기
2021.05.25시작 아마존 웹 서비스에 로그인합니다. 로그인하고 왼쪽 패널을 확인합니다. 아래 링크를 그대로 수행한 것입니다. https://docs.aws.amazon.com/ko_kr/redshift/latest/gsg/rs-gsg-prereq.html 스크린샷으로 남겨 둬서 나중에 헤매지 않기 위해서 포스팅합니다. IAM 역할 생성 IAM 쪽으로 이동해서 역할을 클릭합니다. redShift 시작하기전에 IAM를 통해 Identity를 확인하기 위함인듯 합니다. 역할 만들기를 보면 AWS 서비스 부분이 있습니다. 이것을 클릭하고, 밑에 보면 확인할 수 있는 Redshift를 클릭합니다. 그리고 스크롤을 내려서 보면 사용 사례 선택 부분이 있습니다. 여기서 Redshift - Customizable을 클릭합니다. 역..
express, babel 설치
express, babel 설치
2021.05.25npm i express npm은 패키지 관리 도구입니다. 프로젝트에서 요구하는 서버를 구현하기 위해서는 express 를 설치해 줍니다. express 설치 후, node_modules에서 express > lib 에서 package.json을 확인할 수 있습니다. dependencies 등등 확인해볼 수 있습니다. express의 package.json 파일의 scripts 부분 입니다. 보고 있는 이유는 scripts에는 어떤것이 정의되었는지 확인해보고자 했습니다. 또, dependencies 입니다. 이 express를 실행하려면 반드시 설치해줘야 하는 의존성 패키지들 이라고 생각하시면 좋을 것 같습니다. npm i 시에 package.json의 express의 버전을 package-lock.js..
Youtube 클론
Youtube 클론
2021.05.25니콜라 선생님의 Youtube 클론 강의를 시작합니다. node.js 사용법을 익히는데 목적이 있습니다. ㅎㅎ ! 시작부터 code 명령어가 안먹어서 vscode를 직접 띄워 줬습니다. vscode를 띄운 다음에, github으로 이동해서 코드 형상관리 레포지토리를 하나 생성하였습니다. 생성한 레포지토리와 연동하였습니다. git remote 명령어 참고 프로젝트가 비어있기 때문에 package.json을 만들어 프로젝트에 대한 기본 정보를 입력하였습니다. 실제 정보 기입을 다 한뒤에 package.json을 보면 그대로 들어가 있는것을 확인해볼 수 있습니다. index.js에 "Hello" 를 찍어두고 실제 terminal에서 찍히는지 확인해보았습니다. package.json에 scripts 를 추가해서..
Spring 프로젝트 설정 & 테스트 코드 작성하기
Spring 프로젝트 설정 & 테스트 코드 작성하기
2021.05.25시작 인텔리제이를 사용하였습니다. Gradle 에서 Java를 선택하고 Next를 진행합니다. 프로젝트 이름을 기입합니다. 프로젝트 이름을 기입하고 Finish 버튼을 클릭하게 되면 하기 처럼 프로젝트 Directory 구조가 생성됩니다. build.gradle을 설정할 때 아래처럼 설정해주었습니다. dependencies 까지 플러그인 의존성 관리를 위한 설정입니다. 의존성을 선언하여 사용합니다. 오른쪽 상단의 코끼리 버튼을 클릭하게 되면 정의한 build.gradle를 확인하고 설치하게 됩니다. 패키지를 설치 완료되면 실제로 Gradle 안에서 무엇이 설치됬는지 직접 확인해볼 수 있습니다. github과 연동할 수 있다. 아래 화면의 명령어를 수행 후 Share Project on Github 을 입..
BOJ 17612 쇼핑몰
BOJ 17612 쇼핑몰
2021.05.25개요 이 문제는 우선순위 큐를 사용하는 문제지만, 정렬 방법에 대해 이해하고 있어야 하고 무엇보다 문제에서 주어진 요구사항을 동적으로 처리하는것보다 사전에 전처리하여 값을 모두 저장 한뒤 문제 요구사항에 맞게 풀어야 했었습니다. 처음에는 while 문으로 계속 돌면서 입력 받는대로 동적으로 값을 처리 해주었습니다. 결과적으로 꼬였습니다. 그래서, k개 즉 카운터라고 볼 수 있는 k개에 쇼핑 카트를 모두 대기하는 값을 pq에 담게 되었습니다. 그림 그림을 보게 되면 어쨋든, 상품들이 1초에 하나씩 계산이 될텐데 더 적은 상품에 대해서 카운터에 배정되게 됩니다. 상품의 개수가 같다면 카운트가 더 적은 애한테 우선 할당하게 되는데 그게 인입하는 과정에서 수행하게 됩니다. 반대로, 나갈때도 마찬가지로 기본적인 ..
프로그래머스 튜플(Java)
프로그래머스 튜플(Java)
2021.05.24소개 이 문제는 2019 카카오 개발자 겨울 인턴십으로 출제되었던 문제이다. 해당 문제에 대한 아이디어는 다음과 같다. 로직 1) 연속된 숫자를 추출하여야 한다. 2) 1의 목적을 위해서 자료구조 HashMap을 사용하였다. 3) HashMap의 경우 같은 Key라면 (default :1) +1 씩 더해주었다. 4) 결과적으로 Value (HashMap의 Key에 따른 Value) 로 내림차순하여 순서대로 Key값을 출력해 주었다. 구체화 해보면 다음과 같다. 이를 그림으로 도식화 하면 다음과 같다. 소스코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40..
BOJ_1781_컵라면
BOJ_1781_컵라면
2021.05.23시작하면서 해당 문제는 pq 외에도 그리디한 방법으로 해결해 볼 수 있는데, 포스팅에서는 pq로 푸는 방법에 대해 고민해봤습니다. 여러 알고리즘 로직을 세워서 문제를 접근했는데, 9%에서 "틀렸습니다." 가 나와서 참으로 힘들게 했던 문제입니다. 문제 접근 시 데드라인과 컵라면 수를 잘 고려해봐야 하는데 데드라인은 우선순위를 높게, 같다면 컵라면 수는 더 큰것을 정해서 큐에 담아주어야 합니다. 처음 생각한 점 우선순위 큐를 지정했을 때 정렬 순서를 1. 데드라인은 우선순위를 높게 2. 컵라면 수는 더 큰것을 지정 3. 우선순위 큐에 Max-heap 구성 (데드라인 기준으로 push 할 경우 더 높은 숫자의 데드라인이 pop되는 것을 고려) ex) pq에 {1,7} 이 있다고 고려 하면, 새롭게 {2,6}..
JS06 :: 바닐라 JS 프로젝트(2)
JS06 :: 바닐라 JS 프로젝트(2)
2021.05.22이전 바닐라 JS 프로젝트에서 배경화면을 변경하여 나만의 앱을 생성해보겠습니다. 정적인 화면을 구성하는 index.html 에서 배경화면 처리를 위한 script를 등록하겠습니다. index.html에서 weather.js 를 등록해줍니다. index.html bg.js image는 총 3장을 준비하였습니다. 오리 3총사 image 객체를 생성하고 나면 css의 선택자 class를 포함시키고, body 태그에 해당 tag 를 prepend 하게 됩니다. body 안에 image 가 잡히게 됩니다. (css에서 z-index = -1 로 잡았기 때문에 현재 맨 뒤로 가있는 상태입니다.) 이 다음 코드인 weather.js 구현해야 하는데 현재 위치 좌표를 받아오지 못하고 있다. mac에서 위치 좌표를 설정..
프로그래머스 행렬 테두리 회전하기
프로그래머스 행렬 테두리 회전하기
2021.05.21프로그래머스에서 삼성 역량 테스트에 기본 문제가 될 수 있는 좋은 문제를 찾아 풀어보았습니다. 콘솔화면에 맵에 저장되어 있는 값을 출력하며 방향에 따라 맵에 값이 갱신되는지 체크하며 문제를 해결하였습니다. 처음에는 for 문을 돌면서 확인해보려 했는데, DFS로 반복 탐색을 수행하면 코드 가독성을 높일 수 있을것이라 생각하여 DFS로 접근하였습니다. DFS로 접근 ⏤ 방향 정하기 DFS에 접근할 때 dir 1,2,3,4 로 구성하여 문제를 접근하였습니다. Main에서 DFS에 넘겨주는 params dir가 1, 2일 때 경우 처음 DFS를 진행할 때 시작 지점인 sx, sy에서 시작하는 것이 아닌 sx, sy+1 로 시작지점을 선택하였습니다. 이전 값은 세번째 인자로 전달하여 좌표는 다음 좌표를 바라보고..
JS06 :: 바닐라 JS 프로젝트
JS06 :: 바닐라 JS 프로젝트
2021.05.21바닐라 JS 공부를 시작하면서, 노마드 코더에서 제공하는 바닐라 JS로 크롬웹 만들기를 트라이 해보았습니다. Directory 구조 우선 가장 베이직이 되는 index.html 부터 살펴보겠습니다. html의 구조는 head, body 로 이루어져 있습니다. stylesheet에 포함되어 있는 index.css 로부터 css 값을 읽어와 html이 web의 DOM에 업데이트 하게 됩니다. index.html 보통의 경우에 아래와 같이 많이 사용하게 됩니다. HTML Foramt 여기서 div tag를 이용해 웹 상에 움직이는 시계를 트라이 해보겠습니다. 첫번째 구현 항목은 web으로 동작하는 시계를 만들어보는 것입니다. Redering 화면 ⏤ 1 위 렌더링 화면을 구성하기 위해서 아래 html, js를..