전체 글 169

[알고리즘] javascript 문제해결 패턴 - frequency counter(빈도 카운터)

✅ frequency counter(빈도 카운터)란? 주어진 배열 속 요소의 빈도를 확인하는 문제 worst : 중첩 for문 best : 객체 사용 의사코드 A배열의 각 요소의 제곱이 B요소에 포함되었는지 확인하시오 (갯수도 같아야 함) 👍best 시간 복잡도 : O(n) A 순회해서 {요소: 개수, ...} 객체 만듬 B 순회해서 {요소: 개수, ...} 객체 만듬 A객체의 key 순회해서 B객체 값과 비교 같지 않으면 return false 순회 마쳤으면 return true 👎worst 시간 복잡도 : O(n^2) for A 순회 B.indexOf(n) 찾아서 삭제 없으면 return false 순회 마쳤으면 return true 문제 풀이 주어진 두 숫자가 같은 숫자, 같은 빈도를 가지고 있는지..

[Leetcode] 1689. Partitioning Into Minimum Number Of Deci-Binary Numbers - javascript

📝 문제 A decimal number is called deci-binary if each of its digits is either 0 or 1 without any leading zeros. For example, 101 and 1100 are deci-binary, while 112 and 3001 are not. Given a string n that represents a positive decimal integer, return the minimum number of positive deci-binary numbers needed so that they sum up to n. 문제 더보기 🔑 나의 풀이 var minPartitions = function(n) { let answer = 0; ..

Coding test 2022.07.06

[Leetcode] Array101(explore) 풀이 모음 - javascript

📌Introduction 1. Max Consecutive Ones Given a binary array nums, return the maximum number of consecutive 1's in the array. (주어진 이진수 배열 안에서 연속된 1의 갯수 구하기) 💡 1차 풀이 var findMaxConsecutiveOnes = function(nums) { let cnt = 0; let answer = 0; for(let i = 0; i 0) { answer = Math.max(answer, cnt); cnt = 0; } } } return answer; }; 속도나 메모리 사용량은 보통이다. 💡 2차 풀이 var findMaxConsecutiveOnes = function(nums) { ..

Coding test 2022.07.05

[프로그래머스] 행렬 테두리 회전하기 (Lv 2) - javascript

📝 문제 rows x columns 크기인 행렬이 있습니다. 행렬에는 1부터 rows x columns까지의 숫자가 한 줄씩 순서대로 적혀있습니다. 이 행렬에서 직사각형 모양의 범위를 여러 번 선택해, 테두리 부분에 있는 숫자들을 시계방향으로 회전시키려 합니다. 각 회전은 (x1, y1, x2, y2)인 정수 4개로 표현하며, 그 의미는 다음과 같습니다. x1 행 y1 열부터 x2 행 y2 열까지의 영역에 해당하는 직사각형에서 테두리에 있는 숫자들을 한 칸씩 시계방향으로 회전합니다. 다음은 6 x 6 크기 행렬의 예시입니다. 문제 더보기 🔑 나의 풀이 function solution(rows, columns, queries) { let answer = []; let board = Array.from({l..

Coding test 2022.06.29

[프로그래머스] 거리두기 확인하기 (Lv 2) - javascript

📝 문제 개발자를 희망하는 죠르디가 카카오에 면접을 보러 왔습니다. 코로나 바이러스 감염 예방을 위해 응시자들은 거리를 둬서 대기를 해야하는데 개발 직군 면접인 만큼 아래와 같은 규칙으로 대기실에 거리를 두고 앉도록 안내하고 있습니다. 대기실은 5개이며, 각 대기실은 5x5 크기입니다. 거리두기를 위하여 응시자들 끼리는 맨해튼 거리1가 2 이하로 앉지 말아 주세요. 단 응시자가 앉아있는 자리 사이가 파티션으로 막혀 있을 경우에는 허용합니다. 문제 더보기 🔑 모범 풀이 풀이 과정 P가 있는 위치에서 별로 둘러싸인 마름모 부분을 검색하면 거리두기 성공 여부를 알 수 있다. 주의할 점은 탐색할 위치가 좌표를 벗어나지 않게 처리해야 한다는 것이다. P의 사방에 있는 하늘색 o 부분을 탐색 1. x면 넘어간다. ..

Coding test 2022.06.29

[프로그래머스] 수식 최대화 (Lv 2) - javascript

📝 문제 IT 벤처 회사를 운영하고 있는 라이언은 매년 사내 해커톤 대회를 개최하여 우승자에게 상금을 지급하고 있습니다. 이번 대회에서는 우승자에게 지급되는 상금을 이전 대회와는 다르게 다음과 같은 방식으로 결정하려고 합니다. 해커톤 대회에 참가하는 모든 참가자들에게는 숫자들과 3가지의 연산문자(+, -, *) 만으로 이루어진 연산 수식이 전달되며, 참가자의 미션은 전달받은 수식에 포함된 연산자의 우선순위를 자유롭게 재정의하여 만들 수 있는 가장 큰 숫자를 제출하는 것입니다. 단, 연산자의 우선순위를 새로 정의할 때, 같은 순위의 연산자는 없어야 합니다. 즉, + > - > * 또는 - > * > + 등과 같이 연산자 우선순위를 정의할 수 있으나 +,* > - 또는 * > +,-처럼 2개 이상의 연산자가..

Coding test 2022.06.28

[프로그래머스] 튜플 (Lv 2) - javascript

📝 문제 셀수있는 수량의 순서있는 열거 또는 어떤 순서를 따르는 요소들의 모음을 튜플(tuple)이라고 합니다. n개의 요소를 가진 튜플을 n-튜플(n-tuple)이라고 하며, 다음과 같이 표현할 수 있습니다. (a1, a2, a3, ..., an) 튜플은 다음과 같은 성질을 가지고 있습니다. 중복된 원소가 있을 수 있습니다. ex : (2, 3, 1, 2) 원소에 정해진 순서가 있으며, 원소의 순서가 다르면 서로 다른 튜플입니다. ex : (1, 2, 3) ≠ (1, 3, 2) 튜플의 원소 개수는 유한합니다. 원소의 개수가 n개이고, 중복되는 원소가 없는 튜플 (a1, a2, a3, ..., an)이 주어질 때(단, a1, a2, ..., an은 자연수), 이는 다음과 같이 집합 기호 '{', '}'를..

Coding test 2022.06.28

[프로그래머스] 조이스틱 (Lv 2) - javascript (22.06 풀이)

📝 문제 조이스틱으로 알파벳 이름을 완성하세요. 맨 처음엔 A로만 이루어져 있습니다. ex) 완성해야 하는 이름이 세 글자면 AAA, 네 글자면 AAAA 조이스틱을 각 방향으로 움직이면 아래와 같습니다. ▲ - 다음 알파벳 ▼ - 이전 알파벳 (A에서 아래쪽으로 이동하면 Z로) ◀ - 커서를 왼쪽으로 이동 (첫 번째 위치에서 왼쪽으로 이동하면 마지막 문자에 커서) ▶ - 커서를 오른쪽으로 이동 (마지막 위치에서 오른쪽으로 이동하면 첫 번째 문자에 커서) 예를 들어 아래의 방법으로 "JAZ"를 만들 수 있습니다. - 첫 번째 위치에서 조이스틱을 위로 9번 조작하여 J를 완성합니다. - 조이스틱을 왼쪽으로 1번 조작하여 커서를 마지막 문자 위치로 이동시킵니다. - 마지막 위치에서 조이스틱을 아래로 1번 조작..

Coding test 2022.06.19

[프로그래머스] 예상 대진표 (Lv 2) - javascript

📝 문제 △△ 게임대회가 개최되었습니다. 이 대회는 N명이 참가하고, 토너먼트 형식으로 진행됩니다. N명의 참가자는 각각 1부터 N번을 차례대로 배정받습니다. 그리고, 1번↔2번, 3번↔4번, ... , N-1번↔N번의 참가자끼리 게임을 진행합니다. 각 게임에서 이긴 사람은 다음 라운드에 진출할 수 있습니다. 이때, 다음 라운드에 진출할 참가자의 번호는 다시 1번부터 N/2번을 차례대로 배정받습니다. 만약 1번↔2번 끼리 겨루는 게임에서 2번이 승리했다면 다음 라운드에서 1번을 부여받고, 3번↔4번에서 겨루는 게임에서 3번이 승리했다면 다음 라운드에서 2번을 부여받게 됩니다. 게임은 최종 한 명이 남을 때까지 진행됩니다. 이때, 처음 라운드에서 A번을 가진 참가자는 경쟁자로 생각하는 B번 참가자와 몇 번..

Coding test 2022.06.18

[프로그래머스] 게임 맵 최단거리 (Lv 2) - javascript / BFS

📝 문제 ROR 게임은 두 팀으로 나누어서 진행하며, 상대 팀 진영을 먼저 파괴하면 이기는 게임입니다. 따라서, 각 팀은 상대 팀 진영에 최대한 빨리 도착하는 것이 유리합니다. 지금부터 당신은 한 팀의 팀원이 되어 게임을 진행하려고 합니다. 다음은 5 x 5 크기의 맵에, 당신의 캐릭터가 (행: 1, 열: 1) 위치에 있고, 상대 팀 진영은 (행: 5, 열: 5) 위치에 있는 경우의 예시입니다. 문제 더보기 🔑 풀이 최단 거리 문제는 BFS(너비 우선 탐색)을 사용해야한다. 현재 위치를 노드로 놓고, 사방을 탐색해서 조건에 맞으면 큐에 저장한다. 그리고 그 큐에서 값을 하나씩 꺼내서 사방을 탐색에서 조건에 맞으면 큐에 저장... 이 과정을 큐에 값이 없어질 때까지 반복하면 된다. 그리고 나아갈 때마다 방..

Coding test 2022.06.18