분류 전체보기
-
백준 6064번 카잉 달력 :: 마이구미알고리즘 풀이/수학 2018. 7. 16. 12:44
이 글은 백준 알고리즘 문제 6064번 "카잉 달력" 을 풀이한다.일반적으로 시뮬레이션 문제라고 보이지만, 순수하게 접근하면 시간 초과를 초래한다.별도 알고리즘 지식이 아닌, 시간 초과를 해결하는 다른 접근을 요구한다.문제 링크 - https://www.acmicpc.net/problem/6064 최근에 ICPC 탐사대는 남아메리카의 잉카 제국이 놀라운 문명을 지닌 카잉 제국을 토대로 하여 세워졌다는 사실을 발견했다. 카잉 제국의 백성들은 특이한 달력을 사용한 것으로 알려져 있다. 그들은 M 과 N 보다 작거나 같은 두 개의 자연수 x, y를 가지고 각 년도를 와 같은 형식으로 표현하였다. 그들은 이 세상의 시초에 해당하는 첫 번째 해를 로 표현하고, 두 번째 해를 로 표현하였다. 의 다음 해를 표현한 ..
-
[Slack]Slash Command-Lambda 연동 :: 마이구미AWS 2018. 6. 30. 22:37
이 글은 슬래시(/) 명령어와 AWS Lambda 연동을 다룬다.이전 글(Slack-Codecommit 연동)에서는 AWS 에서 이벤트가 발생하면 이를 Slack 에 알려주었다.여기서는 반대로 Slack 에서 AWS 에게 요청하여 원하는 결과를 받아본다. 슬래시 명령어는 커스텀을 통해 많은 기능을 만들어낼 수 있다.이것은 일반적으로 알고 있는 REST API 를 생각하면 된다.REST API 는 원하는 목적에 따라, 각 요청(request)에 따른 응답(response)이 존재한다.여기서 요청이 URL 이라면, Slack 에서는 슬래시 명령어가 요청이고, 이에 따른 응답이 존재할 것이다. 이전 글을 바탕으로 생각해보면, 위처럼 반대로 Slack 에서 Lambda 로 단순히 요청하면 될 것 같아보인다.사실..
-
Slack-Codecommit 연동 :: 마이구미AWS 2018. 6. 29. 16:04
이 글은 슬랙(Slack) 과 코드커밋(Codecommit) 을 연동하는 과정을 다룬다.코드커밋은 AWS 에서 제공하는 Github 이라고 보면 된다.AWS 람다(Lambda) 학습의 기본 예제로 볼 수 도 있기에, 람다 학습이 필요하다면 도움을 줄 것이다. 슬랙과 코드커밋을 연동하는 목적과 방식은 여러가지가 존재한다.이 글에서 다루는 연동은 코드커밋에서 어떤 이벤트라도 발생한다면, 슬랙에 알려주는 것을 목표로한다.이를 위해 본인이 다루는 방식은 다음과 같다. Codecommit - Git 저장소SNS - 메시지 트리거Lambda - 작성된 함수 호출CloudWatch Logs - 함수 실행에 관련된 로그 확인위 그림의 흐름대로 코드커밋에서 발생한 이벤트를 슬랙에 알려준다.그 결과는 다음과 같은 모습으로..
-
Javascript:Shallow and Deep Copy :: 마이구미Javascript 2018. 6. 18. 11:08
이 글은 자바스크립트에서 객체 복사에 대해 다룬다.크게는 얕은 복사(Shallow Copy)와 깊은 복사(Deep Copy) 로 분류된다.본인은 단순히 두가지의 복사에 대해 참조 여부로 판단하고있었다.그로 인해, 이번 포스팅 과정에서 오해와 명확하지 않은 것들이 많이 존재했다.글을 읽는다면, 복사에서 더 나아가 조금 더 자바스크립트를 이해할 수 있을 것이다.참고 링크 - https://scotch.io/bar-talk/copying-objects-in-javascript 단순 복사 객체 복사에 있어, 가장 순수하게 생각할 수 있는 것은 대입 연산자(=) 를 통한 복사이다.이것은 단순 복사라고 칭하겠다. let mainObject = { a: 1, b: 2}; let copyObject = mainObje..
-
focusout, blur 이벤트 차이와 이해 :: 마이구미Javascript 2018. 6. 9. 15:35
이 글은 focusout 와 blur 의 차이점을 알아보고, 이벤트 발생에 있어, 주의사항을 다뤄본다.다음과 같은 의문 또는 버그가 발생했다면, 글이 도움이 될 것이다.focusout 과 blur 의 차이를 알고 싶다.focusout 또는 blur 를 사용중 다음과 같은 에러가 발생했다. "Uncaught DOMException: Failed to execute 'remove' on 'Element': The node to be removed is no longer a child of this node. Perhaps it was moved in a 'blur' event handler?" focusout 과 blur 의 차이 focusout 는 의미 그대로 엘리먼트가 포커스를 잃었을 때 발생되는 이벤트..
-
Amazon S3: 파일 관리를 위한 aws-sdk 활용법 :: 마이구미AWS 2018. 6. 8. 17:38
이 글은 아마존 웹 서비스(AWS) 중 S3 를 다뤄본다.주요 목적은 S3 를 통해 CMS, FTP 와 같은 리소스 관리 시스템을 구축에 필요한 aws-sdk 의 내부 함수들을 다뤄본다.자바스크립트를 기준으로 진행한다.자바스크립트를 사용하지않더라도 필요한 기능에 있어, 사용하는 함수의 종류 및 흐름을 익히는 것만으로 충분할 것이다. aws-sdk - https://github.com/aws/aws-sdk-js AWS 중 S3 는 일반적으로 현재 기업 홈페이지와 같은 가벼운 사이트에 많이 사용한다.하지만 더 알아간다면, S3 의 활용사례는 무궁무진할정도로 정말 많은 기능이 존재한다.그 중 이 글에서는 리소스 관리와 같은 시스템을 구축하기 위한 알아두어야할 것들을 다뤄볼 것이다.예를 들어, 파일 업로드, 생..
-
거듭제곱 알고리즘 :: 마이구미알고리즘 2018. 6. 6. 06:24
이 글은 거듭제곱에 대한 알고리즘을 다룬다.거듭제곱의 성질을 이용하여 성능을 올리는 과정을 확인한다.백준 알고리즘 문제에서는 다음과 같은 문제를 해결할 수 있다.백준 1629번 곱셈 - https://www.acmicpc.net/problem/1629 거듭제곱이란 주어진 수를 주어진 횟수만큼 곱하는 연산이다.똑같은 수를 여러번 곱하기를 원할 때, 이용한다고 우리는 아마 중학교 때 배웠을 것이다. 만약 거듭제곱을 구하는 알고리즘을 작성해야한다면, 쉽게 구현할 수 있을 것이다.일반적인 방법으로 재귀함수와 반복문 방식은 각각 작성한다면, 다음과 같다. 재귀함수 거듭제곱 public static int pow(int a, int n) { if (n == 0) { return 1; } else { return a..
-
클로저(Closures) 무엇인가? :: 마이구미Javascript 2018. 5. 29. 21:27
이 글은 클로저(Closures) 에 대해 다룬다.자바스크립트 개발 면접이라면, 필수적으로 물을 정도로 중요하다.참고보다 번역에 가까운 글이 되었다.참고 링크 - https://medium.com/dailyjs/i-never-understood-javascript-closures-9663703368e8 자바스크립트의 클로저는 입문자뿐만 아니라 중급자에게도 다소 어려운 개념이 된다.그렇기에, 클로저를 설명하기 위해 서론이 굉장히 길 수도 있다. 실행 문맥(Execution Context)어휘적 범위(Lexical Scope)함수를 통한 함수 반환(A Function that return a function)클로저(Closures) 심지어 모르고 있었더라도, 이미 클로저를 이용하고 있었을 지도 모르는 신기하..