-
백준 2942번 퍼거슨과 사과 [최대공약수] :: 마이구미알고리즘 풀이/수학 2017. 5. 23. 22:49
이번 글은 백준 알고리즘 2942번 "퍼거슨과 사과" 를 다뤄본다.문제 풀이는 GCD, 즉 최대공약수를 활용하여 문제를 해결할 수 있다. 맨체스터 유나이티드의 감독 퍼거슨은 빨간 사과를 R개, 초록 사과를 G개 가지고 있다. 훈련장에 있는 선수들 중 몇 명에게 나누어 주려고 한다. 단, 선수들이 서로 같은 개수의 사과를 받지 못하면 경기력 저하가 나타날 수 있으므로 모든 선수에게 같은 개수를 주려고 한다. 퍼거슨 감독은 사과를 싫어한다. 따라서 사과가 남으면 안된다.예를 들어, 퍼거슨이 빨간 사과를 4개, 초록 사과를 8개 가지고 있다면, 다음과 같이 세가지 방법으로 나누어 줄 수 있다.선수 1명에게 빨간 사과 4개와 초록 사과 8개를 줄 수 있다.선수 2명에게 빨간 사과 2개와 초록 사과 4개를 각각 ..
-
백준 13900번 순서쌍의 곱의 합 [부분합] :: 마이구미알고리즘 풀이/수학 2017. 5. 21. 00:34
이번 글은 백준 알고리즘 문제 13900번 "순서쌍의 곱의 합" 을 다뤄본다.최근에는 서강대학교 프로그래밍 대회에서 출제된 문제이다.정답률이 30%이하로써, 단순히 쉬운 문제는 아닐 것이다.풀이 방법은 많겠지만, 부분합으로 일반적으로 접근할 수 있다. N개의 정수 중 서로 다른 위치의 두 수를 뽑는 모든 경우의 두 수의 곱의 합을 구하라.예를 들어 N = 3이고 주어진 정수가 2, 3, 4일 때, 두 수를 뽑는 모든 경우는 (2, 3), (2, 4), (3, 4)이며 이 때 각각의 곱은 6, 8, 12이다. 따라서 총합은 26이다. 처음에는 동적계획법 느낌으로 접근하려했다.2를 뽑을 경우 나머지 3, 4를 뽑을 수 있고, 3을 뽑을 경우 4를 뽑을 수 있다.쉽게 2개의 반복문을 통해 구현할 수 있겠다고 ..
-
백준 6322번 직각 삼각형의 두 변 :: 마이구미알고리즘 풀이/수학 2017. 5. 20. 22:10
이번 글은 백준 알고리즘 문제 6322번 "직각 삼각형의 두 변" 을 다뤄본다.사실 제목만 봐도 무슨 문제인지 파악할 수 있다. 중등과정 피타고라스의 공식을 활용하면 문제를 풀 수 있다.사실 상 쉬운 문제로써, 글의 주제거리가 될만큼은 아니지만 좋은 문제라고 판단했다.문제는 피타고라스의 공식의 약간의 응용이 필요하다.피타고라스 공식, 소수점 포맷, 제곱근 3가지만 알고 있다면, 무난히 해결할 수 있다. 직각 삼각형의 세 변의 길이 a, b, c가 주어진다. a, b, c중 하나는 -1이며, -1은 알 수 없는 변의 길이이다. 다른 두 수는 10,000보다 작거나 같은 자연수이다. 주어지지 않는 한 가지 변의 길이를 찾는 문제가 된다. a^2 + b^2 = c^2a^2 + b^2 - c^2 = 0 피타고라..
-
getter setter in ES6 :: 마이구미Javascript 2017. 5. 19. 23:55
이번 글은 getter와 setter를 다뤄본다.getter와 setter에 대한 자료는 이해할 수 없는 글들과 궁금증을 해결시켜주는 못하는 글들이 대부분이다.도대체 왜 getter와 setter 굳이 왜 쓰는지? 왜 써야하는거지? 대한 궁금증에 도움이 되는 글이 쓰겠다.예제는 ES6 기준으로 진행하지만, 언어와 상관없이 봐도 무관하다. getter와 setter를 언급한다면, 대부분 private 개념이 따라오게 된다.책이나 글에서 볼 수 있는 극단적인 예는 아래와 같다.private 변수를 지정한 후, 이 변수에 접근하기 위해 getter, setter를 이용한다.맞는 말이다. 하지만 이해하기 힘들 거라고 생각한다. 다음 예제를 통해 확인해보자.1. name을 저장할 때는 정확한 값일 때 저장한다.2..
-
백준 3060번 욕심쟁이 돼지 :: 마이구미알고리즘 풀이/수학 2017. 5. 16. 23:21
이번 글은 백준 알고리즘 문제 3060번 "욕심쟁이 돼지" 를 다뤄본다.난이도 있는 문제가 아니지만, 정답률은 30%이기 때문에, 함정이 있을거라 예측할 수 있다.문제 풀이는 나머지 연산을 활용하는 문제라고 볼 수 있다. 예를 들어, 현수가 1번부터 6번까지 돼지에게 각각 3, 2, 7, 1, 5, 4만큼 밥을 주었다면, 2번 돼지는 첫 날 받은 양 2에다 양쪽과 맞은편 돼지가 받은 양 15(3+7+5)만큼을 더해 17만큼 받기를 원한다.마음씩 좋은 농부 박현수는 이런 돼지의 요구를 모두 들어주려고 한다. 매일 현수의 집에 신선한 사료가 N만큼 배달된다. 사료의 유통기한은 하루이기 때문에, 남은 사료는 모두 폐기한다.첫 날 돼지들이 먹었던 양이 주어졌을 때, 현수가 6마리의 돼지들의 요구를 들어줄 수 없..
-
git tag 사용법 :: 마이구미GitHub 2017. 5. 13. 18:49
이번 글은 git 명령어 중 tag 에 대해 다뤄본다.tag는 branch와 혼동될 수 있으나 서로 다른 목적을 지닌다. 단순히 tag 는 소스 버전을 정하는 용도로 많이 사용한다.히스토리를 남긴다고 생각하면 편하다. tag 사용 시 Github 에서는 아래와 같이 보여진다. 다른 계정의 Github의 소스를 내려받을 때 checkout 명령어를 사용하는 예들을 봤을 거라 생각한다.모른다면 tag를 활용해 checkout 을 통해 가이드를 작성한 글을 보고 오면 좋다. ( 관련 링크 ) 위 링크는 어떤 필자가 자신이 작성한 코드를 통해 가이드 관련 글이다.이렇게 가이드를 할 때, tag를 이용하면 가이드를 보는 사람은 순서대로 따라할 수 있게 활용할 수 있다. 간단히 말하자면, 아래와 같다. (특정 소스..
-
VSCode 자동 완성 [typings] :: 마이구미개발 설정 2017. 5. 11. 23:23
이번 글은 VS code의 intellisense 기능. 즉, 자동 완성 기능에 대해 다뤄본다.대부분의 개발도구에서 언어와 무관하게 기본적으로 제공하는 편리한 기능이다. VS code 에서는 다른 라이브러리의 기능들을 자동 완성 기능을 추가할 수 있다.예를 들어, jquery, lodash 와 같은 라이브러리 또한 자동 완성 기능이 있다면 편리할 것이다. 대부분의 툴에서는 기본적인 자동 완성 기능을 가지고 있다.하지만 jquery, lodash 같은 라이브러리를 위한 자동 완성 기능은 가지고 있지 않다. lodash의 자동 완성 기능을 적용해보자.우선 npm을 통해 typings 를 설치해야한다.typings 는 TypeScript의 정의 관리 도구라고 보면 된다.The TypeScript Definit..
-
백준 1107번 리모컨 [브루트 포스] :: 마이구미알고리즘 풀이/브루트 포스 2017. 5. 10. 23:12
이번 글은 백준 알고리즘 문제 1107번 "리모컨" 을 다뤄본다.문제 접근 방법은 브루트 포스. 즉, 노가다로 해결할 수 있다.1107번 리모컨 - https://www.acmicpc.net/problem/1107 리모컨에는 버튼이 0부터 9까지 숫자, +와 -가 있다. +를 누르면 현재 보고있는 채널에서 +1된 채널로 이동하고, -를 누르면 -1된 채널로 이동한다. 채널 0에서 -를 누른 경우에는 채널이 변하지 않고, 채널은 무한대 만큼 있다.수빈이가 지금 이동하려고 하는 채널은 N이다. 어떤 버튼이 망가져있는지 주어졌을 때, N으로 이동하기 위해서 버튼을 최소 몇 번 눌러야하는지 구하는 프로그램을 작성하시오. 수빈이가 지금 보고 있는 채널은 100번이다. 본인은 처음에 단순히 채널을 한자리씩 분해하여..