목록멋있는 JavaScript (22)
너무너무 멋져 눈이눈이 부셔
H-Index는 과학자의 생산성과 영향력을 나타내는 지표입니다. 어느 과학자의 H-Index를 나타내는 값인 h를 구하려고 합니다. 위키백과1에 따르면, H-Index는 다음과 같이 구합니다. 어떤 과학자가 발표한 논문 n편 중, h번 이상 인용된 논문이 h편 이상이고 나머지 논문이 h번 이하 인용되었다면 h의 최댓값이 이 과학자의 H-Index입니다. 어떤 과학자가 발표한 논문의 인용 횟수를 담은 배열 citations가 매개변수로 주어질 때, 이 과학자의 H-Index를 return 하도록 solution 함수를 작성해주세요. function solution(citations) { var answer = 0; let N = Math.max(...citations); for(let i = N; i>=0..

문제 zxcvber는 외계인을 연구하는 과학자다. 그는 지난 10년간 우주에서 오는 시그널를 연구했지만, 아무런 성과가 없었다. 그러던 어느 날, 갑자기 우주에서 이상한 시그널이 오기 시작했다. zxcvber는 매우 기뻐하며 시그널을 받아서 분석해보았다. 시그널은 0과 1로 이루어져 있는데, 여기서는 편의상 0을 ".", 1을 "#"으로 표시한다. 시그널은 다음과 같았다. ###.....###.#..####.#.......#.#....####.....###.#....##.#.......#.#....####.....###.#....# 다른 여러 시그널들을 분석해본 결과, zxcvber는 시그널의 길이가 항상 5의 배수라는 것을 알게 되었다. 시그널을 다섯 개로 쪼개면 뭔가 규칙이 보이지 않을까 생각한 zx..
값(value) 값은 표현식이 평가되어 생성된 결과 평가 : 식을 해석(실행)해서 하나의 값을 생성하거나 참조하는 것. 3+4 를하면 자바스크립트 엔진이 평가하고 7을 도출해낼 것이다. 리터럴 사람이 이해할 수 있는 문자 or 기호를 사용해 값을 생성하는 표기법. 변수에 넣는 변하지 않는 데이터, 소스 코드의 고정된 값을 의미한다. const age = 12;라면 age는 상수이고 12는 리터럴이다. 자바스크립트 엔진은 코드가 실행되는 시점인 "런타임(runtime)" 에 "리터럴을 평가"해 값을 생성한다. // 리터럴 표현식 10 // 식별자 표현식 sum // 연산자 표현식 10 + 20 // 함수/메소드 호출 표현식 square() 표현식(expression) 리터럴, 식별자, 연산자, 함수 호출 ..
자바스크립트 연산자 + 덧셈 - 뺄셈 * 곱셈 / 나눗셈 % 나머지 자바스크립트 증감 연산자 ++ 증가 -- 감소 그러나 위치에 따라서 의미가 달라짐! num++ : 증가 나중, 다른 연산 후에 증가한다. ++num : 증가 먼저, 증가 연산 후에 다른 연산이 일어난다. var x = 5, result; // 선대입 후증가 (Postfix increment operator) result = x++; console.log(result, x); // 5 6 // 선증가 후대입 (Prefix increment operator) result = ++x; console.log(result, x); // 7 7 다른 타입에 +,- 붙이기 +true : 1로 반환한다. -true : -1로 반환한다. -'10' : ..
원시 타입 (primitive data type) number string boolean null undefined symbol (New in ECMAScript 6) 객체 타입 (Object data type) object 원시 타입 원시타입은 변경 불가능한 값이며, 값에 의한 전달이다. number 숫자 타입은 배정밀도 64비트 부동소수점( -(2^53 -1) 와 2^53 -1 사이의 숫자값 ) 형식을 따른다. 즉, 모든 수를 실수로 처리한다. Infinity : 양의 무한대 -Infinity : 음의 무한대 NaN : Not-a-Number, 산술 연산 불가 var binary = 0b01000001; // 2진수 var octal = 0o101; // 8진수 var hex = 0x41; // 16..

자바스크립트 기초 문법 자바스크립트는 세미콜론으로 문장을 구분한다. 대부분의 경우에는 문제 없이 동작하지만, alert("에러가 발생합니다.") [1, 2].forEach(alert) //이것과 동일 alert("에러가 발생합니다.")[1, 2].forEach(alert) 이런 경우에서는 alert으로 1,2가 출력되지 않는다.(정상작동 시 1이라는 창이 뜨고 2라는 창이 떠야 한다) 자바스크립트가 대괄호 앞에서는 세미콜론이 있다고 가정하지 않기 때문. 그래서 줄바꿈으로 문을 나눴더라도 세미콜론을 넣는 것을 권장한다. 주석 // 이것이 주석 /* 여러줄 주석 (단축키 컨트롤 +쒸쁘뜨 + / ) */ /*...*/안에 또 다른 /*...*/이 있을 수 없습니다. 자바스크립트 엄격모드 - 자바스크립튼는 업데..
문제 크기가 H × W인 배열 A와 두 정수 X와 Y가 있을 때, 크기가 (H + X) × (W + Y)인 배열 B는 배열 A와 배열 A를 아래로 X칸, 오른쪽으로 Y칸 이동시킨 배열을 겹쳐 만들 수 있다. 수가 겹쳐지면 수가 합쳐진다. 즉, 배열 B의 (i, j)에 들어있는 값은 아래 3개 중 하나이다. (i, j)가 두 배열 모두에 포함되지 않으면, Bi,j = 0이다. (i, j)가 두 배열 모두에 포함되면, Bi,j = Ai,j + Ai-X,j-Y이다. (i, j)가 두 배열 중 하나에 포함되면, Bi,j = Ai,j 또는 Ai-X,j-Y이다. 배열 B와 정수 X, Y가 주어졌을 때, 배열 A를 구해보자. 입력 첫째 줄에 네 정수 H, W, X, Y가 주어진다. 둘째 줄부터 H + X개의 줄에 배..
문제 스택 (stack)은 기본적인 자료구조 중 하나로, 컴퓨터 프로그램을 작성할 때 자주 이용되는 개념이다. 스택은 자료를 넣는 (push) 입구와 자료를 뽑는 (pop) 입구가 같아 제일 나중에 들어간 자료가 제일 먼저 나오는 (LIFO, Last in First out) 특성을 가지고 있다. 1부터 n까지의 수를 스택에 넣었다가 뽑아 늘어놓음으로써, 하나의 수열을 만들 수 있다. 이때, 스택에 push하는 순서는 반드시 오름차순을 지키도록 한다고 하자. 임의의 수열이 주어졌을 때 스택을 이용해 그 수열을 만들 수 있는지 없는지, 있다면 어떤 순서로 push와 pop 연산을 수행해야 하는지를 알아낼 수 있다. 이를 계산하는 프로그램을 작성하라. 입력 첫 줄에 n (1 ≤ n ≤ 100,000)이 주어..