![[Typescript] 함수(2)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLbdo0%2FbtsFyfcR4ZX%2FQtTkFXGlnNi6t9GNv9XON1%2Fimg.png)
3️⃣ 함수 타입함수타입 구문은 화살표 함수와 유사하지만 함수 본문 대신 타입이 있다. 💥기본적인 사용법let nothingInGivesString : () => string;이 변수 타입은 매개변수가 없고 string을 반환하는 함수이다. 함수 타입은 콜백 매개변수(함수로 호출되는 매개변수)를 설명하는 데 자주 사용된다.const songs = ["Butter", "As Time Goes by", "Hey Jude"];/* getSongAt 매개변수의 타입을 index:number 로 받고 string을 반환하는 함수 */function runOnSongs(getSongAt: (index: number) => string) { for (let i = 0; i 🚩 함수 타입 괄호/* 타입은 str..
![[BOJ] 백준 2075 N번째 큰 수 Python](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvB1MJ%2FbtsFygiuS5B%2FCTSSUV93KbsSxLXd7L8fdk%2Fimg.png)
2075번: N번째 큰 수 첫째 줄에 N(1 ≤ N ≤ 1,500)이 주어진다. 다음 N개의 줄에는 각 줄마다 N개의 수가 주어진다. 표에 적힌 수는 -10억보다 크거나 같고, 10억보다 작거나 같은 정수이다. www.acmicpc.net 문제풀이 첫번째 시도) N번째 큰 수를 단순히 최대힙을 만들어 구하려고 했다. 1 ≤ N ≤ 1500 라는 N의 범위값과 12MB라는 메모리 공간 제한 때문에 메모리 제한이 나왔다. from sys import stdin from heapq import heappush, heappop input = stdin.readline n = int(input()) arr = [] tmp_arr = [] for _ in range(n): tmp_arr = list(map(int,..
![[Typescript] 함수(1)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fo1fxy%2FbtsFAv59duc%2FJzKsvdimxm1rS1GYpVRV61%2Fimg.png)
1️⃣ 함수 매개변수이런식으로 코드를 작성한다고 해보자.function sing(song){ console.log(song);}/*함수호출*/sing("LALALALA"); 함수 호출시 "LALALALA"는 string인데 sing 함수를 작성한 개발자는 song 매개변수를 제공하기 위해 의도한 값의 타입을 적어주지 않았다. 즉, song인자로 int가 올지 string이 올지 객체가 올지 그 누구도 알 수 없다. function sing(song:string){ /*명시적 타입 정보 선언*/ console.log(song);}/*함수호출*/sing("LALALALA");따라서 위와 같이 반드시 명시적 타입 정보를 선언해주어야한다. 🚩필수 매개변수JavaScript에서는 인수의 수와 상관없이..
![[Typescript] 객체(2)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsdasD%2FbtsEEXjK4Av%2FU2WqhlV8RKG4dNLsY3GKY0%2Fimg.png)
3️⃣객체 타입 유니언유니언 : 값에 허용된 타입을 두 개 이상으로 확장하는 것 🚩유추된 객체 타입 유니언변수에 여러 객체 타입 중 하나가 될 수 있는 초기값이 주어지면 Typescript는 해당 타입을 객체 타입 유니언으로 유추한다.유니언 타입은 가능한 각 객체 타입을 구성하고 있는 요소를 모두 가질 수 있다.const poem = Math.random() > 0.5 ? { name:"The Double Image", pages:7}:{ name:"Her Kind",rhymes:true};console.log(typeof(poem.name)); /*string*/console.log(typeof(poem.pages)); /*number | undefined*/console.log(typeo..
![[Typescript] 객체(1)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbfylAf%2FbtsEHGOh8R7%2FNAG5bEtDXbeuGMI5frS8UK%2Fimg.png)
객체 리터럴은 각자의 타입이 있는 키와 값의 집합이다.객체 타입은 객체가 필요로 하는 것을 설명한다.1️⃣객체타입객체 타입은 객체 리터럴과 다르다.객체타입은 필드 값 대신 타입을 사용해 설명한다.코드작성 시 객체 타입을 선언할 때 : 으로 선언한다는 것을 유의하자./* 객체 타입*/let object : { name : string; age: number;};/*객체 리터럴*/let object2 = { name : "hello world", phone : 23};별칭 객체 타입{name : string; age : number}과 같은 객체 타입을 계속 작성하는 일은 귀찮기 때문에 객체 타입에 타입 별칭을 할당해 사용하는 것이 일반적이다.type Person = { name..
![[ThreeJS] 자주쓰이는 속성과 클래스 정리Note](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F6chf3%2FbtsDp96jaZZ%2FBB8uzOEiXF6syDmvzdy2kK%2Fimg.png)
조명전 포스팅에서는 Material 클래스를 선언할때 조명 설정없이도 3D객체를 나타낼 수 있는 BasicMaterial로 선언하였다.하지만 주로 쓰이는 클래스는 라는 클래스이다.이 BasicMaterial을 제외한 나머지 Material클래스들은 조명이 없으면 시각화되지 않는다.이를 해결하기 위해 우리는 조명이라고 불리는 'Light'를 설정해주어야한다.Light는 아래와 같이 DirectionalLight 클래스로 선언하고 인자로 빛의 색, 광원의 밝기를 받는다.const directionalLight = new THREE.DirectionalLight("white", 10);directionalLight.castShadow = true; //빛이 그림자를 드리울 수 있게함directionalLigh..
![[BOJ] 백준 9251 LCS Python](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FO0a6w%2FbtsDllEPKgs%2FfTGIHTyxPREgfNa1vam3PK%2Fimg.png)
9251번: LCSLCS(Longest Common Subsequence, 최장 공통 부분 수열)문제는 두 수열이 주어졌을 때, 모두의 부분 수열이 되는 수열 중 가장 긴 것을 찾는 문제이다. 예를 들어, ACAYKP와 CAPCAK의 LCS는 ACAK가 된다.www.acmicpc.net문제풀이두 문자열이 주어졌을 때 모두의 부분 수열이 되는 수열 중 가장 긴것의 길이를 찾는 문제이다. 수열은 사용자의 입력을 받으므로 될 수 있는 경우의 수는 무한에 가깝다. 따라서 이 문제는 DP로 푸는것이 적절하다.먼저 문자열 두개를 입력받아 한 글자씩 쪼개며 각각의 list에 저장한다. 그 다음 indexError을 피하기 위해 0번째 index에 값으로 0을 넣어주고 그 다음 dp배열을 2차원배열로 선언하며 길이를..
![[BOJ] 백준 11053 가장 긴 증가하는 부분 수열 Python](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlPRAp%2FbtsDkuPMdjR%2Fi0af8sOqZ4uXnG1uIs9JWk%2Fimg.png)
11053번: 가장 긴 증가하는 부분 수열수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이www.acmicpc.net문제풀이N N은 자연수)의 조건을 보고 시간복잡도상 2중 for문을 사용할 수 있는 것을 알았다. 경우의 수가 너무 많기에 DP로 푸는 문제임을 직관적으로 알 수 있었고 인덱스가 증가함에 따라 값이 증가해서 부분수열의 길이가 늘어나야한다면 현재까지의 부분수열의 길이와 이전 상황들에 대한 부분수열의 길이를 비교해서 더 큰 값을 현재까지의 부분수열의 길이로 정할 수 있다.따라서 점화식은 아래와..
![[ThreeJS] ThreeJS 기본 구성 요소](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FYYQ6N%2FbtsDhf7kOzE%2FVGhXaZofM9g9snFF2bO3G1%2Fimg.png)
ThreeJS란?ThreeJS란 WebGL(Web Graphic's Library)을 쉽게 사용할 수 있도록 해주는 JS기반 라이브러리이다. Graphic들은 html canvas 위에 그려지는데 이를 개발자가 좀 더 편하게 다루기 위해서 사용된다.ThreeJS의 기본 구성 요소기본 구성 요소에는 4가지(Renderer, Scene, Camera, Mesh)가 있다. 영화로 예를 들어 설명하자면 Renderer는 영화를 송출하는 기기, Scene은 영화의 배경 혹은 장면, Camera는 영화를 찍고 있는 카메라(시점), Mesh는 영화의 등장인물이나 주위 물체를 의미한다. 1. Rendererconst renderer = new THREE.WebGLRenderer();renderer.setSize(wi..
![[ThreeJS] ThreeJS 환경 세팅](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FP0MqA%2FbtsDj2lF1al%2FzjXpnYboLfQbPdyCZJC4UK%2Fimg.png)
환경세팅하는 법 프로젝트 디렉토리를 생성하는 절차는 생략하고 진행한다. Vite를 사용하여 프로젝트를 생성한다. npm create vite@latest project_name -- --template vanilla Vite가 지원하는 템플릿은 이러한 것들이 있다. 프로젝트 생성 후 그 디렉토리 안에서 다음 명령어를 실행해 Threejs 라이브러리를 설치해준다. 설치방법은 다음과 같다. npm i three 방금 전 명령어가 문제없이 실행되었다면 프로젝트 디렉토리 내부에 package.json 안에 dependencies에 "three" 라이브러리가 추가된 모습을 볼 수 있다. npm run dev 프로젝트를 생성 후 위의 명령어를 입력하면 서버를 실행시킬 수 있다. 이렇게 ThreeJs 세팅과 실행을 ..