Algorithm

    [Programmers] LV1: 카카오 신규아이디 추천 (JavaScript)

    문제 // 너무 코드가 길고 작성하는데 시간이 많이 걸렸다... 거의 1시간 // 대부분 2시간 ~ 3시간안에 적어도 3문제 이상을 해결해야하는데 이렇게 코드를 작성하다가는 // 시간안에 다른 문제를 풀지 못할 것 같다.. // 다른 알고리즘 고수분들은 어떻게 풀었을지.. 다른 사람의 풀이와 검색을 통해 확인을 해봐야겠다!! // 무슨 7줄에 해결을... 이래서 정규표현식 정규표현식 하는건가 ㅠ.ㅠ // 문자를 다루는 문제를 해결할 떄는 정규표현식을 활용해서 푸는 연습을 해보아야겠다. function solution(new_id) { const maxLength = 15; const minLength = 3; let recommendationID = replaceUppercaseToLowercase(ne..

    [Baekjoon] 바이러스

    문제 1번 컴퓨터를 통해 웜 바이러스에 걸리게 되는 컴퓨터의 수를 출력하는 프로그램을 작성하시오. 풀이 BFS(너비우선탁색), Queue(큐)를 이용하여 해결 주어진 input값으로 이루어진 graph를 생성 컴퓨터들의 상태가 담길 distance를 생성 1번 컴퓨터와 연결된 모든 컴퓨터를 0 => 1 로 변경 distance 배열중 1인 요소들의 개수를 return Code const fs = require('fs'); const input = fs.readFileSync('/dev/stdin').toString().trim().split('\n'); const [total, node, ...list] = input const graphElements = li..

    [Programmers] 크레인 인형뽑기 게임 (JavaScript)

    문제 설명 게임화면인 2차원 배열과 크레인을 작동시킨 위치 배열이 주어졌을 경우 동일한 2개의 인형이 이웃하여 터진 모든 인형의 수를 구하는 문제 풀이과정 ✨ [stack, for ... of] 뽑은 인형들이 들어갈 stack 자료구조의 basket 생성 index를 이용하여 답을 도춣해낼 것이기 때문에 첫번째 요소가 0인 moveIndexList를 새롭게 생성 2중 for ... of 문을 사용하여 행으로 구분된 전체 배열 `board 를 탐색함 item (뽑기로 뽑은 아이템)이 존재할 때 해당 아이템이 basket의 마지막 아이템과 일치한다면 basket.pop()해주고 answer에 터진 아이템 개수를 더해줌 그렇지 않다면 basket의 마지막 요소로 push해줌 마지막으로 뽑은 자리의 인형번호를 ..

    [Programmers] LV2 영어끝말잇기

    문제설명 영어단어를 통한 끝말잇기를 진행하는 중입니다. 사람의 수 n과 사람들이 순서대로 말한 단어 words 가 매개변수로 주어질 때, 가장 먼저 탈락하는 사람의 번호와 그 사람이 자신의 몇 번째 차례에 탈락하는지를 구해서 return 하도록 solution 함수를 완성해주세요. 탈락조건 이미 나온 단어를 또 다시 이야기한 경우 이전 단어의 끝자리 알파벳과 지금 말한 단어의 첫번째 알파벳이 일치하지 않은 경우 풀이 주어진 words의 각 단어를 순회한다. 이 때 틀린사람의 번호와 그 사람이 몇번째 기회에서 틀렸는지 구하기 위해 index를 활용한다. 조건문을 통해 이전단어가 존재하면서 이전 단어의 마지막 알파벳과 현재단어의 첫번째 알파벳이 같지 않을 때와 이미 나온 언어들이 들어가있는 speachedW..

    [Programmers] JadenCase 문자열 만들기 (JavaScript)

    문제설명 JadenCase란 모든 단어의 첫 문자가 대문자이고, 그 외의 알파벳은 소문자인 문자열입니다. 단, 첫 문자가 알파벳이 아닐 때에는 이 어지는 알파벳은 소문자로 쓰면 됩니다. (첫 번째 입출력 예 참고) 문자열 s가 주어졌을 때, s를 JadenCase로 바꾼 문자열을 리턴하는 함수, solution을 완성해주세요. 문제풀이✨ 주어진 문자열을 공백을 기준으로 나누어 배열로 변환한다. String.split(' ') Array.map 을 이용하여 나누어진 요소의 첫번째 알파벳을 대문자(Upper Case)로 변환하고 나머지는 소문자(Lower Case)로 변환한다. 그리고 첫번째 알파벳과 나머지 알파벳을 더해준다. 단어를 요소로 이루어진 배열을 Array.join(' ') method를 사용하여..

    [Programmers] 소수 만들기 (JavaScript)

    문제 설명 주어진 숫자 3개의 수를 더했을 때 소수가 되는 경우의 수를 구하는 문제 풀이과정 ✨ 반복문을 이용하여 3개의 수를 더했을 때의 수를 number 변수에 할당한다. sosu()라는 함수명을 가진 함수를 선언하고 로직을 구현한다. sosu 함수는 숫자를 인자로 받아 2 부터 자기자신의 제곱근까지 반복문을 통해 나머지를 구한다. 2부터 자기자신의 제곱근까지 나누어 보았을 때 나머지가 0이 아니라는 것은 소수가 아님으로 false를 return 한다. sosu로 부터 return 받은 Boolean type이 true 라면 변수 answer에 + 1 을 해준다. 결과값 answer를 return 받는다. Code function solution(nums) { let answer = 0; let ma..

    [Programmers] 숫자 문자열과 영단어 (JavaScript)

    문제설명 네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다. 네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다. 다음은 숫자의 일부 자릿수를 영단어로 바꾸는 예시입니다. 1478 → "one4seveneight" 234567 → "23four5six7" 10203 → "1zerotwozero3" 이렇게 숫자의 일부 자릿수가 영단어로 바뀌어졌거나, 혹은 바뀌지 않고 그대로인 문자열 s가 매개변수로 주어집니다. s가 의미하는 원래 숫자를 return 하도록 solution 함수를 완성해주세요...

    [Programmers] 실패율 (JavaScript)

    문제 설명 슈퍼 게임 개발자 오렐리는 큰 고민에 빠졌다. 그녀가 만든 프랜즈 오천성이 대성공을 거뒀지만, 요즘 신규 사용자의 수가 급감한 것이다. 원인은 신규 사용자와 기존 사용자 사이에 스테이지 차이가 너무 큰 것이 문제였다. 이 문제를 어떻게 할까 고민 한 그녀는 동적으로 게임 시간을 늘려서 난이도를 조절하기로 했다. 역시 슈퍼 개발자라 대부분의 로직은 쉽게 구현했지만, 실패율을 구하는 부분에서 위기에 빠지고 말았다. 오렐리를 위해 실패율을 구하는 코드를 완성하라. 실패율은 다음과 같이 정의한다. 스테이지에 도달했으나 아직 클리어하지 못한 플레이어의 수 / 스테이지에 도달한 플레이어 수 전체 스테이지의 개수 N, 게임을 이용하는 사용자가 현재 멈춰있는 스테이지의 번호가 담긴 배열 stages가 매개변..

    [Algorithm] 소수구하기

    문제 N이 주어졌을 때, N보다 크고 2N보다 작거나 같은 소수의 개수를 구하는 문제 풀이 0 ~ 2N까지의 숫자에 해당하는 배열을 생성하고 에라토스테네스의 체 를 이용하여 소수를 구하려고 한다. 이 방법은 2부터 구하고자 하는 숫자까지를 모두 나열하고 2부터 차례대로 1씩 증가하면서 해당 숫자의 배수를 모두 지우는 방식이다. 그렇기 때문에 코드에서는 배열의 index를 활용해서 true -> false로 변경시켰다. 이 때 해당 수의 제곱근 까지만 범위를 제한하게되면 루프횟수를 O(logN)으로 만들어 줄 수 있다. 제곱근 의 법칙이 성립하는 이유는 어떤 수(n)은 두 수 (a, b)의 곱으로 나타낼 수 있다. 예를 들어 12는 2 * 6, 3 * 4로 나타낼 수 있고 두가지 경우의 작은 수를 보게되면..