분류 전체보기
프로그래머스 튜플(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를..
프로그래머스 짝지어 제거하기
프로그래머스 짝지어 제거하기
2021.05.20이 문제를 처음 시도할 때는 for 문으로 순회하며 같은 알파벳이 있는 경우 (현재 인덱스, 다음 인덱스) 를 넘어가고 다음 알파벳을 체크 하였다. 로직을 수행할 때는 다음 순서를 따른다. 1) 현재 알파벳과 다음 알파벳을 비교 2) 새로 만든 문자열을 가지고 1번을 수행 TC는 통과했지만, 결국 시간 초과 가 났다. 그러면 어떻게 푸는것이 효과적일까? 정답은 Stack 은근 간단하다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 import java.util.*; class Solution { public int solution(String s) { int answer = -1; char[] chas = s.toCharArray(); Sta..
책으로 ㅡ 치유하는 시간
책으로 ㅡ 치유하는 시간
2021.05.20간만에 책을 읽었다. 책을 읽으면서 느낀 점은 세상에 우연이란 없었다 라는 것. 왜냐하면, 인과 관계에 발생은 우연히 발생하는것이 아니기 때문이다. 정확한 것은 원인이 있기 때문에 결과로 이어지는 것임을 한번 더 느꼈다. 총평에 대해 언급하면, 좋은 사례을 인용해 전달하고자 하는 내용을 명확하게 소개하고 있다. 특히, 제 3자의 눈에서 생각해보면 지극히 객관적인 것들에 대해(평범해 보일 수 있는것에 대해) '나' 라는 시점으로 끌고 와 공감하고, 위로하며 학창 시절부터 성인되기 까지 경험적으로 한번씩 겪어 볼 만한 내용들을 전부 다루고 있다고 생각한다. 우리는 흘러가는 시간 속에서 경험을 하고 산다. 경험 속에서 받은 감정들의 색은 가지각색이며 여러 가지 색으로 또 물들어 간다. 슬픔, 분노, 즐거움, ..
프로그래머스 2개 이하로 다른 비트
프로그래머스 2개 이하로 다른 비트
2021.05.20프로그래머스에 새롭게 보이는 문제가 있어 도전하였습니다. 처음 문제에 접근할 때는 다음 로직으로 프로그래밍 하였습니다. 1) 주어진 숫자 N에 대해 이진수로 변경한다. 2) 주어진 숫자 N에 대해 순차적으로 1씩 증감시키면서 (1)에서 변경한 이진수와 비교하여 자릿수 숫자의 차이가 2개 이하인 경우에 대해 answer를 return 한다. 위 로직을 수행할 경우 시간 초과가 발생하게 됩니다. 생각해보면 numbers의 모든 수가 10의 15승이기 때문에 최악의 경우 10의 15승이 될 수 있기 때문에 사실상 정답이 될 수 없는 로직입니다. 그 다음 문제를 접근할 때는 규칙에 주목하였습니다. 문제에서 제공되는 예시를 가지고 생각해봤습니다. 7=0111 에 대해 다른 비트의 개수는 11=1011 이 됩니다...
완주하지못한선수 / k번째 수
완주하지못한선수 / k번째 수
2021.05.08Javascript로 두 문제를 풀어보았습니다. 관련해서 Javascript 문법이나 특이점을 정리해보고자 합니다. 1) 완주하지못한선수 HashMap을 사용해서 해결할 수 있는 문제였는데 Javascript에서 HashMap을 정의할 때 아래와 같이 사용합니다. HashMap에 데이터를 삽입한 후 for loop으로 데이터를 조회할 때에는 아래와 같이 사용합니다. 이 문제에서는 특별한 로직이 필요없습니다. 여러 풀이법이 있겠지만 HashMap을 이용하면 쉽게 접근할 수 있습니다. Code 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 function solution(participant, completion) { var ans..
알고리즘 :: 신규 아이디 추천 (javascript)
알고리즘 :: 신규 아이디 추천 (javascript)
2021.05.07javascript에 익숙해지기 위해 관련 언어를 서칭하며 문제를 해결해 보았습니다. 관련 문제는 2021 KAKAO BLIND RECRUITMENT 신규아이디추천 입니다. 정규식을 알아야 풀 수 있는 문제라고 접근했는데 서치해보니 문자열의 각 문자를 참조할 수 있는 방법에 대해 공부할 수 있었습니다. MDN Web Docs에서 관련 내용을 참고해보면 ThecharCodeAt()method returns an integer between0and65535representing the UTF-16 code unit at the given index. 로 소개되어있습니다. 즉, Unicode로 반환되기 때문에 우리가 은히 알고있는 아스키 코드표를 참고해서 비교해봄으로써 문제에서 요구한 사항을 지켜낼 수 있습니..
Kibana - Elasticsearch 연동하면서 발생한 트러블 슈팅
Kibana - Elasticsearch 연동하면서 발생한 트러블 슈팅
2021.05.06Google Cloud Platform에서 pub/sub으로 streaming 데이터 수집하는 과정 fluentd ⇢ ELK (ES, Kibana) 아키텍처 수립 후 구현하는 과정에서 ES, Kibana를 VM위에 설치 및 운영하는 과정에서 발생하는 트러블 슈팅에 대해 작성해보고자 합니다. 1. Kibana server is not ready yet 이 경우 Kibana 설치 버전과 Elastic Search 설치 버전이 같은지 확인하여야 합니다. (호환성 이슈) elastic search 설치 버전 확인 kibana 설치 버전 확인 - kibana의 경우 status를 확인해도 버전을 확인할 수 없어 log file에서 확인해 볼 수 있었습니다. log file중 kibana 의 버전 확인 2. 그럼에..
Google Cloud On Air Review
Google Cloud On Air Review
2021.05.03Database Week Google Cloud Platform을 이용하면 사용자가 간단하게 DB 유지보수를 수행할 수 있습니다. 기존에 On-premise에서는 인프라를 구축하고 실행, 유지해야 하고 다운 타임에 failOver에 대응하기 위해 모니터링 작업을 수행해야 합니다. 하기에 나온 내용들을 IT 인력이 직접 관리해야 하는 단점이 있습니다. 데이터베이스의 시스템도 마찬가지로 기존의 모놀리식의 단점을 보완하여 오토 스케일링을 지원할 수 있는 장점이 큽니다. 또, 다운 타임에 대해 Failover가 지원되며 Google Cloud Platform 자체적으로 SLA가 지원되고 있습니다. 기존 legacy System에서 Cloud로 이관시 시스템 최적화 매니지드 서비스가 제공되기 때문에 Applica..