본문 바로가기

알고리즘17

[프로그래머스] 수식 최대화 - javascript 문제 [programmers.co.kr/learn/courses/30/lessons/67257] 문제 설명 IT 벤처 회사를 운영하고 있는 라이언은 매년 사내 해커톤 대회를 개최하여 우승자에게 상금을 지급하고 있습니다. 이번 대회에서는 우승자에게 지급되는 상금을 이전 대회와는 다르게 다음과 같은 방식으로 결정하려고 합니다. 해커톤 대회에 참가하는 모든 참가자들에게는 숫자들과 3가지의 연산문자(+, -, *) 만으로 이루어진 연산 수식이 전달되며, 참가자의 미션은 전달받은 수식에 포함된 연산자의 우선순위를 자유롭게 재정의하여 만들 수 있는 가장 큰 숫자를 제출하는 것입니다. 단, 연산자의 우선순위를 새로 정의할 때, 같은 순위의 연산자는 없어야 합니다. 즉, + > - > * 또는 - > * > + 등과 .. 2021. 4. 15.
[Codility] Lesson 4: Counting Elements - MaxCounters (javascript) 문제 You are given N counters, initially set to 0, and you have two possible operations on them: increase(X) − counter X is increased by 1, max counter − all counters are set to the maximum value of any counter. A non-empty array A of M integers is given. This array represents consecutive operations: if A[K] = X, such that 1 ≤ X ≤ N, then operation K is increase(X), if A[K] = N + 1 then operation .. 2021. 3. 18.
NODE.JS 기반으로 알고리즘 풀때 입력받는 방법 서론 알고리즘 사이트는 여러가지가 있는데 프로그래머스 나 leetCode와 같은 사이트는 자동으로 입력을 처리해주고 함수내 알고리즘 코드만 작성하면 되는거라 입력받는 것에 대한 고민은 따로 안했었습니다. 근데 이번에 백준으로 알고리즘 풀어보면서 NODE.JS 기반이라 입력을 따로 처리 해줘야 해서 좀 번거로운 것 같단 생각을 했습니다. 익숙하지도 않고요 ㅜㅜ 그래서 백준에서 JS로 알고리즘 풀 때 입력처리를 어떻게 해야하는지 좀 알아보도록 하겠습니다. readline 모듈 사용하기 우선 모듈은 readline 모듈을 사용하도록 하겠습니다. 여러가지 방법이 있던데, 이번시간에는 readline으로 알아보겠습니다.(근데 이 모듈이 런타임 에러를 발생시킬 수도 있다네요 확실히 엄청 느립니다 ㅜㅜ) 한줄 입력 .. 2021. 2. 26.
leetCode1315. Sum of Nodes with Even-Valued Grandparent - 문제: [Sum of Nodes with Even-Valued Grandparent](https://leetcode.com/problems/sum-of-nodes-with-even-valued-grandparent/) - 난이도: leetcode 기준 Medium 문제 해설 짝수조부모를 가진 노드의 합을 구하는 문제 였는데 Medium 치고 난이도가 높지는 않았다. 애초에 모든 노드를 checking을 했어야 해서 단순하게 BFS or DFS로 탐색을 하면 되는문제 였다. 난 DFS로 풀었다. root로 들어오는 트리노드는 아래와 같이 만들어졌다. ** * Definition for a binary tree node. * function TreeNode(val, left, right) { * this.. 2021. 2. 20.
빅오표기법 정리 - with JS 빅오표기법 빅오표기법이란 무엇인가? 일반적인 빅오 표기법 빅오표기법규칙 빅오표기법이란 무엇인가? 빅오표기법이란 알고리즘의 최악의 경우 복잡도를 측정하여 나타내는 것이다. 일반적인 빅오 표기법 빅오표기법에서 n은 입력의 개수를 나타낸다. O(1)은 입력공간에 대해 변하지 않는다. 따라서 O(1)을 상수시간이라 부른다. O(n)은 선형시간이며 최악의 경우에 n번 연산을 수행해야하는 알고리즘에 적용된다. O(log n) O(nlog n) O(n^2) O(n^3) O(2^n) 빅오표기법 규칙 빅오표기법의 규칙은 아래와 같고 아래의 법칙을 적용시켜 복잡도를 계산하면 된다. 계수법칙 합의법칙 곱의법칙 전이법칙 다항법칙 계수법칙 우선 계수법칙 부터 알아보자. 계수법칙은 단순히 입력 크기와 연관되어 있지 않은 상수를 .. 2021. 2. 12.
구현 알고리즘 - 왕실의나이트 지난 포스팅에서 풀었던 상하좌우 알고리즘을 기초하여 풀었습니다. 이동할 수 있는 범위를 정해 놓고 좌표를 이동하면서 경우의 수를 체크하는것 입니다. def move(p): row = int(p[1]) column = int(ord(p[0])+1)-int(ord(p[0])) steps = [(-2,-1),(-1,-2),(1,-2),(1,2),(2,-1),(2,1),(-1,2),(-2,1)] result = 0 for step in steps: next_row = row + step[0] next_column = column + step[1] if next_row >=1 and next_row = 1 and next_column 2020. 11. 26.