[프로그래머스] Lv.2 타겟 넘버 - JavaScript
·
CodingTest
문제 설명n개의 음이 아닌 정수들이 있습니다. 이 정수들을 순서를 바꾸지 않고 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다. 사용할 수 있는 숫자가 담긴 배열 numbers, 타겟 넘버 target이 매개변수로 주어질 때 숫자를 적절히 더하고 빼서 타겟 넘버를 만드는 방법의 수를 return 하도록 solution 함수를 작성해주세요. 제한 조건주어지는 숫자의 개수는 2개 이상 20개 이하입니다.각 숫자는 1 이상 50 이하인 자연수입니다.타겟 넘버는 1 이상 1000 이하인 자연수입니다.입출력 예numberstargetreturn[1,1,1,1,1]35[4,1,2,1]42 이 문제는 DFS (깊이우선..
[JavaScript] var, let, const를 비교해보자 (재선언, 재할당, 스코프, 호이스팅)
·
JavaScript
자바스크립트에서는 변수를 선언할 때 var, let, const 이렇게 세가지 키워드를 이용해 선언할 수 있다. ES5까지 변수를 선언할 수 있는 유일한 방법은 var만 있었는데 ES6에서 var의 문제점에 대응하기 위해서 let과 const가 생겨났다.이 세가지가 선언, 할당, 범위에서 차이가 나는데 헷갈리지 않게 자세하게 정리해보고자 한다 ! 1️⃣ 중복 선언var : 중복 선언이 가능하다var name = "안녕"console.log(name) //안녕var name = "하이"console.log(name) //하이 var은 중복해서 선언이 가능하다. 이 경우에, 마지막에 할당된 값이 변수에 저장된다.변수를 유연하게 사용할 수 있다는 장점이 있지만, 기존에 선언해둔 변수의 존재를 까먹고 값을 재할..
[JavaScript] 자바스크립트의 실행 컨텍스트란 무엇일까?
·
JavaScript
✅ 실행 컨텍스트 ( Execution Context )실행 컨텍스트란, 실행할 코드에 제공할 환경 정보들을 모아놓은 객체이다.동일한 환경에 있는 코드들을 실행할 때 필요한 환경 정보들을 모아 객체를 구성하고 이를 콜 스택에 쌓아 올렸다가 가장 위에 쌓여있는 컨텍스트와 관련된 코드들을 실행하는 식으로 전체 코드의 환경과 순서를 보장한다. 스택스택은 출입구가 하나인 LIFO ( Last in First Out ) 구조이다.스택에 a,b,c,d를 순서대로 저장하면 꺼낼 때 d,c,b,a 순서대로 나온다. 실행 컨텍스트 예시// --------------------------- (1)var a = 1;function outer() { function inner() { console.log(a); // ..
[프로그래머스] Lv.2 짝지어 제거하기 - JavaScript
·
CodingTest
문제 설명짝지어 제거하기는, 알파벳 소문자로 이루어진 문자열을 가지고 시작합니다. 먼저 문자열에서 같은 알파벳이 2개 붙어 있는 짝을 찾습니다. 그다음, 그 둘을 제거한 뒤, 앞뒤로 문자열을 이어 붙입니다. 이 과정을 반복해서 문자열을 모두 제거한다면 짝지어 제거하기가 종료됩니다. 문자열 S가 주어졌을 때, 짝지어 제거하기를 성공적으로 수행할 수 있는지 반환하는 함수를 완성해 주세요. 성공적으로 수행할 수 있으면 1을, 아닐 경우 0을 리턴해주면 됩니다.예를 들어, 문자열 S = baabaa 라면b aa baa → bb aa → aa →의 순서로 문자열을 모두 제거할 수 있으므로 1을 반환합니다. 제한 조건문자열의 길이 : 1,000,000 이하의 자연수문자열은 모두 소문자로 이루어져 있습니다. 입출력 ..
[프로그래머스] Lv.2 괄호 회전하기 - JavaScript
·
CodingTest
괄호 회전하기다음 규칙을 지키는 문자열을 올바른 괄호 문자열이라고 정의합니다.(), [], {} 는 모두 올바른 괄호 문자열입니다.만약 A가 올바른 괄호 문자열이라면, (A), [A], {A} 도 올바른 괄호 문자열입니다. 예를 들어, [] 가 올바른 괄호 문자열이므로, ([]) 도 올바른 괄호 문자열입니다.만약 A, B가 올바른 괄호 문자열이라면, AB 도 올바른 괄호 문자열입니다. 예를 들어, {} 와 ([]) 가 올바른 괄호 문자열이므로, {}([]) 도 올바른 괄호 문자열입니다.대괄호, 중괄호, 그리고 소괄호로 이루어진 문자열 s가 매개변수로 주어집니다. 이 s를 왼쪽으로 x (0 ≤ x s가 올바른 괄호 문자열이 되게 하는 x의 개수를 return 하도록 solution 함수를 완성해주세요. ..
[프로그래머스] Lv.1 모의고사 - JavaScript
·
CodingTest
문제 설명수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는 방식: 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, ...2번 수포자가 찍는 방식: 2, 1, 2, 3, 2, 4, 2, 5, 2, 1, 2, 3, 2, 4, 2, 5, ...3번 수포자가 찍는 방식: 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, ... 1번 문제부터 마지막 문제까지의 정답이 순서대로 들은 배열 answers가 주어졌을 때, 가장 많은 문제를 맞힌 사람이 누구인지 배열에 담아 return 하도록 solution 함수를 작성해주..
[프로그래머스] Lv.1 두 개 뽑아서 더하기 - JavaScript
·
CodingTest
문제 설명정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요. 제한 사항numbers의 길이는 2 이상 100 이하입니다.numbers의 모든 수는 0 이상 100 이하입니다. 입출력 예numbersresult[2,1,3,4,1][2,3,4,5,6,7][5,0,2,7][2,5,7,9,12] 문제 풀이function solution(numbers) { var answer = []; var sum=0; for(let i=0; ia-b);} 뭔가 깔끔하게 푼 것 같아서 맘에 든다 ㅎ.ㅎ우선 두 개의 수를 뽑아 더해서 나올 수 ..
[프로그래머스] Lv.1 이상한 문자 만들기 - JavaScript
·
CodingTest
문제 설명문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요. 제한 사항문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단해야합니다.첫 번째 글자는 0번째 인덱스로 보아 짝수번째 알파벳으로 처리해야 합니다. 입출력 예sreturn "try hello world""Try HeLlO WoRlD" 문제 풀이function solution(s) { var answer = []; var words = s.split(" "); // 이렇게되면 try, hello, world로 나누어짐 ..
[프로그래머스] Lv.1 정수 제곱근 판별 - JavaScript
·
CodingTest
문제 설명 임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다. n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요. 제한 사항 n은 1이상, 50000000000000 이하인 양의 정수입니다. 입출력 예 n return 12 144 3 -1 문제 풀이 function solution(n) { var answer = 0; for(let i=1; i*i
[프로그래머스] Lv.1 핸드폰 번호 가리기 - JavaScript
·
CodingTest
문제 설명 프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다. 전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요. 제한 조건 phone_number는 길이 4 이상, 20이하인 문자열입니다. 입출력 예 phone_number return "01033334444" "*******4444" "027778888" "*****8888" 문제 풀이 function solution(phone_number) { var answer = ''; for(let i=0; i=phone_number.length-4) answer+=phone_number[i..