JavaScript

함수란수학에서의 함수와 마찬가지로 프로그래밍 언어에서의 함수는 입력을 받고 출력을 내보내는 일련의 과정을 하나의 실행 단위로 정의한 것을 말한다.함수의 구성 요소매개 변수 : 함수 내부로 입력을 전달받는 변수입력 : 인수출력 : 반환값함수 정의함수를 생성하는 것함수 호출 전 전달받을 매개변수, 실행할 문, 반환값을 지정한다.함수가 정의되면 JS엔진에 의해 평가되어 함수 객체가 된다.함수 정의 방법함수 선언문함수 이름생략 불가function add(x,y){ return x + y; }함수 표현식var add = function (x,y){ return x + y; };Function 생성자 함수var add = new Function('x', 'y', 'return x + y');화살표 함수(ES6)va..
객체자바스크립트는 객체 기반 프로그래밍 언어이다.원시타입과는 다르게 다양한 타입의 값들을 하나의 단위로 구성한 복합적인 자료구조이다!객체는 변경 가능한 값이다!0개 이상의 프로퍼티(는 키-값으로 구성)로 구성된 집합이다.프로퍼티 값이 함수면 일반함수와 구분하기 위해 메서드(method)라고 부름.💡 프로퍼티 : 객체 상태를 나타내는 값(data) 메서드 : 프로퍼티를 참조하고 조작할 수 있는 동작상태와 동작을 하나의 단위로 구조화할 수 있어서 유용하다.JS에서는 객체와 함수는 밀접하다. 함수로 객체를 생성하기도 하고 함수 자체가 객체이기 때문이다.리터럴 Literal리터럴이란 사람이 이해할 수 있는 문자 또는 약속된 기호를 사용해 값을 생성하는 표기법(notation)을 의미한다.쉽게 말해 사람이 이해..
변수 선언변수를 생성하는 것, 즉 값을 저장하기 위한 메모리 공간을 확보하는 것을 말한다.변수 이름, 확보된 메모리 공간 주소를 연결해서 값을 저장할 수 있게 준비한다.확보된 메모리 공간은 해제되기 전까지는 그 공간을 누군가가 사용할 수 없게 보호되기 때문에 안전하게 사용이 가능하다.변수를 사용하려면 선언은 필수!JS에서는 var, let, const가 있다.선언만 하고 할당은 하지 않았다면 undefined가 암묵적으로 할당되어서 초기화된 상태이다.[JS의 특징임!]JS의 변수 선언 단계선언 단계: 변수 이름을 등록해서 JS 엔진에게 변수 존재를 알린다.초기화 단계: 메모리 공간 확보 후 초기화(undefined)초기화var : 변수 선언과 초기화 동시에 진행초기화를 거치지 않으면 이전에 쓰이던 쓰레기..
· 알고리즘
문제 조건 분석입력: 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000), 둘째 줄부터 N개의 줄에 수가 주어진다. 이 수는 절댓값이 1,000,000 이하인 정수이다. 수는 중복되지 않는다.출력: 첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다.설계sort 활용해서 정렬하기추가 공부join() 반환값Array.prototype.join()separator로 배열 원소들을 연결한 문자열 하나가 반환된다. 만약 빈 배열에 적용하면 빈 문자열이 반환된다.Number()new를 써서 생성자로 쓰면 Number 객체를 생성한다.함수로 사용하면 원시값을 Number 타입으로 변환해준다.반환값생성자로 쓸 때 : 강제변환 프로세스를 통해 Number 객체로 변환된 값을 반환한다. ..
· 알고리즘
문제 조건 분석입력: 첫째 줄에 명령의 수 N (1 ≤ N ≤ 10,000), 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다.주어지는 정수는 1~100,000. 문제에 나와있지 않은 명령이 주어지는 경우는 없다.출력: 한 줄에 하나씩 출력스택 구현하기설계push X: 정수 X를 스택에 넣는 연산이다.pop: 스택에서 가장 위에 있는 정수를 빼고, 그 수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다.size: 스택에 들어있는 정수의 개수를 출력한다.empty: 스택이 비어있으면 1, 아니면 0을 출력한다.top: 스택의 가장 위에 있는 정수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다.⇒ 각각 함수로 분리해서 구현하기⇒ 출력은 pop, size, e..
· 알고리즘
문제 조건 분석입력:첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의 정수이다.합이 M을 넘지 않는 카드 3장을 찾을 수 있는 경우만 입력으로 주어진다.출력3장의 카드의 합이 M 이하이면서 카드의 합을 최대한 크게 만드는 것각 카드에는 양의 정수가 적혀 있다.N장의 카드 중에서 3장의 카드를 골라야 한다.플레이어가 고른 카드의 합은 딜러가 외친 숫자 M을 넘지 않으면서 M과 최대한 가깝게 만들어야 한다.설계그리디로 풀 수 있나..?우선 내림차순으로 카드를 정렬합니다.순회하며 가장 큰 세 장을 더해 M을 넘는지 확인합니다.넘는다면 가장 큰 카드를 제외하고 다시 다음으로 ..
· 알고리즘
문제 조건 분석입력: 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000), 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi. (-100,000 ≤ xi, yi ≤ 100,000)좌표는 항상 정수위치가 같은 두 점은 없다.출력: 첫째 줄부터 N개의 줄에 점을 정렬한 결과를 출력설계이차 배열로 입력값 받아오기이후에 sort의 compareFn을 조건에 맞게 설계다른 풀이sort 비교함수 간단하면 분리 없이 이렇게 작성해도 괜찮을 것 같다.arr.sort(function (a, b) { if (a.x - b.x == 0) { return a.y - b.y; } else { return a.x - b.x; } });코드 개선forEach로 join하지 말고 sort 비교함수에서 구조 분해 할당으로 j..
· 알고리즘
문제 분석입력값으로 받은 점수들 중 최댓값을 이용해 점수를 모두 변경해 새로운 평균을 반환하는 문제입력: 과목 개수 N, 점수들출력 : 첫째 줄에 새로운 평균 출력.실제 정답과 출력값의 절대오차 또는 상대오차가 10-2 이하이면 정답트러블슈팅소수점 표현(예제 참고)문제는 브론즈1에 기초적인 내용이라 금방 해결할 것으로 예상했으나, 예제를 꼼꼼히 보지 않아 여러 번 수정했습니다.조건 중에 첫째 줄에 새로운 평균을 출력한다. 실제 정답과 출력값의 절대오차 또는 상대오차가 10-2 이하이면 정답이다. 라는 말이 있었는데, 상대오차를 부분을 간과하고 넘어가서 생긴 실수였습니다.이후 여러 예제들 중 10-2 이하의 오차를 허용한다는 말은 정확히 소수 2번째 자리까지 출력하라는 뜻이 아니다.라는 말과 함께 아래 예..
· 알고리즘
고득적 Kit - 해시Level 2 - 전화번호 목록 이 문제가 해시인 건 아마도 주어진 데이터가 순서에 상관없이 가공되어 원하는 값을 반환하면 되는 것이라서,, 처음에는 이중 for문을 피하려고 forEach를 쓰고 if return으로 처리했는데forEach는 중간에 루프를 탈출할 수 없다고 한다..! 그래서 죽어도 false가 출력되지 않았던 것! 그걸 수정할 방법을 gpt로부터 some을 추천 받았다.근데 some 쓸 때 쓸데없이 조건식에 {} 넣었다가 헤맴,,중괄호 생략해야 한다! 아래는 수정본function solution(phone_book) { phone_book.sort((a,b) => a - b); for(let i = 0; i (idx > i) && (num..
· 알고리즘
고득점 Kit - 해시Lv.1 폰켓몬최대한 많은 종류의 폰켓몬을 포함해서 N/2마리를 선택하려 합니다. N마리 폰켓몬의 종류 번호가 담긴 배열 nums가 매개변수로 주어질 때, N/2마리의 폰켓몬을 선택하는 방법 중, 가장 많은 종류의 폰켓몬을 선택하는 방법을 찾아, 그때의 폰켓몬 종류 번호의 개수를 return 하도록 solution 함수를 완성해주세요.내 풀이function solution(nums) { const limit = nums.length / 2; let tmp = new Set(nums); let types = [...tmp].length; if (limit - 여기서 Set.length가 undefined로 반환되어서 배열로 바꿔주었는데, set에 size ..
jimyu
'JavaScript' 태그의 글 목록 (2 Page)