본문 바로가기

Language

💚 백준 2018 수들의 합 5 1. 문제 분석문제 링크1~N까지 수 중에서 연속된 합으로 N이 나올 수 있는 가짓수 구하기시간 제한 2초, 주어지는 N의 최대값 10,000,000무엇을 최적화라 말하는지 아직 모르겠어서, 이것들의 의미가 와닿지 않는다.2. 푸는 원리투포인터로 풀기연속된 수들의 합을 축척한 변수 acc를 만든다.오른쪽 포인터 b가 움직일 때마다, acc 에 b 만큼 더한다.왼쪽 포인터 a가 움직일 떄마다 acc에서 a 만큼 뺀다.특정 시점에서 acc의 값이 N과 같아졌을 경우, N이 되는 가지수를 하나 센다.문제 푸는 방법은 생각났지만, 세부적으로 a와 b를 acc에 더하는 시점, while 문을 끝내는 시점 등에서 많이 해매서, 답지를 봤다.a와 b가 현재 존재하는 index 부분은 acc에 더해진 부분이라는 것을 .. 더보기
Enum에 대하여 Enum은 열거형이라고 부른다. (영어로는 enumerated type이라 하고 이것의 줄임말이다.) Enum은 ‘요소’ 혹은 ‘멤버’ 라 불리는 명명된 값의 집합을 이루는 자료형이다. 여기서 ‘명명되다.’란 어떤 물건이나 일에 이름이 지어져 붙여지는 것을 말한다. Enum의 멤버가 되는 녀석들은 주로 어떤 물건이나 일을 식별하기 위한 상수 역할을 한다. 더보기
몰랐던 것 1. Intger 컬랙션 프레임워크를 int 배열로 바꾸기. int [] arr = map.keySet().stream().mapToInt(x->x).toArray(); maptoInt(x->x): 컬랙션 프레임 워크에는 값들을 Wrapper Class인 Integer로 다 저장 했다. 하지만 배열에 저장할려면 type이 원시타입(int, double,...) 여야 한다 해당 maptoInt는 컬랙션 프레임 워크값을 IntStream으로 바꿔준다. (IntStream 원시 타입 int에 대한 Stream 이다.) toArray(): 컬랙션을 배열로 바꿔주는 함수. (원시 타입으로 바꿀 거면, 인수도 원시 타입이어야 한다.) 2. String ArrayList를 String 배열로 바꾸는 방법 String.. 더보기
콜백 (Call Back) 1. 콜백이란? 하나의 코드에 인수로 들어가는 실행 가능한 코드를 Call back이라 한다. 어떤 함수의 인자로 들어가는 실행 가능한 함수를 Call back 함수라고 한다. 2. 콜백 예제 3가지 (1) 기본적인 것 const a = (callback) => { console.log("A"); callback(); }; const b = () => { console.log("B"); }; a(b); 맨 마지막 문을 보면, a라는 함수의 인수로 b 함수 자체를 넣었다. 그러면 console.log(b) 했을 때 처럼 b 함수 자체가 a의 인수로 들어간다. 그리고 3번째 줄을 보면 callback()은 인수로 받은 b() 함수 자체를 실행하겠다는 의미이다. 따라서 출력이 다음과 같다. (2) 응용 // .. 더보기
즉시 실행 함수 (IIFE) 1. 즉시실행함수 함수는 원래 선언부 (혹은 표현식)과 호출부가 따로 필요하다. 왜냐하면 선언부는 함수의 내용에 대해 기술만 하여 놓은 곳이고, 호출부는 함수의 내용을 쓰는 곳 이기 때문이다. 즉시 실행함수는 함수의 선언과 호출을 한번에 하는 함수를 말한다. 밑에 즉시 실행함수 사용 패턴을 배우겠지만, 대표적인 패턴으로 즉시실행함수의 모습을 살펴보면, //(실행할 함수)(인수); // 예시 ((a) => { console.log(a*2); })(7); 이와 같다. ()() 가 붙어 있는 형태로, 첫번째 ()에는 실행할 함수, 두번째 ()에는 함수에 들어갈 인자를 기술하면 된다. 2. 패턴 // 즉시 실행 함수 패턴 // 1. 화살표 함수 사용 패턴 -> 화살표 함수로 즉시 실행 함수를 쓸 수 있는 패턴은.. 더보기
화살표 함수 0. 화살표 함수는 변수에 익명 함수를 할당하는 형식이므로 함수 선언이 아니라 함수 표현식 취급을 받는다. (호이스팅 불가) 1. 화살표 함수의 패턴 const a = () => {}; // 매개변수가 하나이면 소괄호 생략 가능 const b = x => {}; const c = (x, y) => {}; // 만약 함수 동작부분에 다른 로직 없이 return문만 있다면 {}와 return 키워드 생략이 가능하다. const d = (x) => {return x * x;}; const e = (x) => x * x; // 만약 함수 동작부분 내에 return 말고 다른 로직이 있다면 { return} 형태로 적어줘야 함. const f = (x) => { console.log(x * x); return x.. 더보기
매개변수 패턴 0. 기본형 function sum(a, b) { // 여기는 인수를 받는 매개체 매개변수 return a + b; } console.log(sum(1, 2)); // 여기가 들어온 값 인수 인수, 매개변수 두 용어를 헷갈렸었는데, 인수는 함수가 호출되어 실제 들어오는 값을 뜻하고, 매개변수는 함수 선언문에 적히는 인수를 받는 매개체를 뜻한다. 1. 기본값 위의 함수에서 만약에 사용자가 sum 함수를 호출하고 인수를 하나만 쓴 경우 어떻게 될까? console.log(sum(7)); // 7과 undefined를 더 해서 not a number 두 번째 인수로는 undefined가 들어가서 7 + undefined가 되어 NaN이 출력될 것이다. 이를 방지하기 위해서 매개변수에 조치를 취할 수 있다. '.. 더보기
함수의 반환과 종료 1. return (1) 반환하는 역할 return 옆에 적힌 내용을 반환 값이라 한다. 반환 값은 함수를 호출했을 때, 호출문 자리에 대신해서 적힐 값이다. function hello() { return "hello~"; } console.log(hello()); // console.log("hello~")와 같은 말이다. ** return 옆에 아무것도 안 적어줬을 시? ** return 뒤에 아무것도 안 적어주면 undefined가 출력된다. function hello2() { return; } console.log(hello2()); (2) 함수를 종료하는 역할 함수 코드를 위에서 아래로 진행하다가 return 문을 만나면 그 자리에서 함수를 종료하고 return 값 반환 뒤, 탈출한다. 따라서 .. 더보기