1. 문자

let color = 'purple';  // 'purple'을 자동적으로 string으로 인식 (다른 타입도 마찬가지)
let color:string = 'purple'

 

 

2. 숫자

let age:number = 30

 

 

3. 불리언

let isAdult:boolean = true;

 

 

4. 숫자/ 문자열 배열

let arr:number[] = [1,2,3]  //숫자 배열

let arr:string[] = ['a','b','c']  //문자열 배열1
let arr:Array<string> = ['a','b','c']  //문자열 배열2

 

 

5. 튜플

let b:[string, number] // 첫번째 인자: 문자 , 두번째 인자: 숫자

b = ['a',1]

 

 

6. void / never

void : 함수에서 아무것도 반환하지 않을 때 사용함

const sayHello = ():void =>{
	console.log('hello')
}

sayHello()

naver : 항상 에러를 반환하거나 끝나지않는 함수 타입으로 사용함

const showError = ():never => {
	throw new Error()
}

const infLoop = ():never => {
	while(true) {
    	// do something
    }
}

 

 

7. enum 

enum : 비슷한 값을 묶어 주는, 열거형 데이터

enum Os {
    Window = 3, // 기본적으로 0부터 순차적으로 할당됨 (3으로 작성시 3으로 할당, 3부터 순차적으로 할당됨)
    Ios, 
    Android
}

console.log(Os[3])  // Window
console.log(Os['Window'])  // 3

let myOs:Os  // Os의 값만 넣을 수 있다

myOs = Os.Window

 

 

8. null / undefined

let a:null = null
let b:undefined = undefined

Node.js를 주로 사용하지만, 타입스크립트의 요구가 늘어나는 것같아 배워보고자 한다.

 


 

Javascript는 동적언어라, 런타임에 타입이 결정되고 오류를 발생시킨다. 

코드상에는 오류가 발생하지 않았지만, 의도하지 않은 결과가 나타난다.

 

 

하지만, typescript(나 Java)는 정적언어라 컴파일 타임에 타입이 결정되고 오류를 발생시킨다.

아래처럼 아직 실행시키지도 않았는데, 오류들이 나타난다.

 

 

typescript 사용할때에는 type을 설정해줘야한다.

의도한 대로 사용하지 않으면 오류를 보여준다. 

 

문제

컴퓨터를 이용하면 수학 계산이 조금 쉬워진다. 다음과 같은 예를 살펴보자. 세 변의 길이가 a, b, c(c는 빗변)이면서 a2+b2=c2를 만족하는 삼각형을 직각삼각형이라고 한다. 이 공식은 피타고라스의 법칙이라고 한다.

직각 삼각형의 두 변의 길이가 주어졌을 때, 한 변의 길이를 구하는 프로그램을 작성하시오.

 

 

입출력 예시

 

해결

const fs = require('fs');
const { start } = require('repl');
const stdin = (process.platform === 'linux'
    ? fs.readFileSync('/dev/stdin').toString()
    : `6 -1 6
3 4 -1
-1 2 7
5 -1 3
0 0 0` 
).match(/[^\r\n]+/g);

const input = (() => {
let line = 0;
  return () => stdin[line++];
})();

let i = 1;
let answer=[];

while (true) {
  const s = input().split(' ').map(Number)

  if (s[0] === 0) break;

  const area = s.indexOf(-1)
  const arr = ['a','b','c']

  if (arr[area] == 'a') {
    const sq = (s[2]**2) - (s[1]**2)
    const line = (Math.sqrt(sq)).toFixed(3)
    
    if (line < s[2]  && line != 0){
      answer.push(`Triangle #${i}\n${arr[area]} = ${line}`)
    } else {
      answer.push(`Triangle #${i}\nImpossible.`)
    } 
  }

  if (arr[area] == 'b') {
    const sq = (s[2]**2) - (s[0]**2)
    const line = (Math.sqrt(sq)).toFixed(3)
    
    if (line < s[2] && line != 0){
      answer.push(`Triangle #${i}\n${arr[area]} = ${line}`)
    } else {
      answer.push(`Triangle #${i}\nImpossible.`)
    } 
  }

  if (arr[area] == 'c') {
    const sq = (s[0]**2) + (s[1]**2)
    const line = (Math.sqrt(sq)).toFixed(3)
    
    if (line > s[2] && line != 0){
      answer.push(`Triangle #${i}\n${arr[area]} = ${line}`)
    } else {
      answer.push(`Triangle #${i}\nImpossible.`)
    } 
  }

  i++;
}

console.log(answer.join('\n\n'))

'개발 공부 > Algorithm' 카테고리의 다른 글

[백준/Node.js] 오늘도 졌다  (0) 2023.03.23
[백준/Node.js] 블랙잭  (0) 2023.03.22
[백준/Node.js] 팬그램  (0) 2023.03.20
[백준/Node.js] 탄산 음료  (0) 2023.03.17
[백준/Node.js] 팰린드롬수  (0) 2023.03.16

문제

팬그램은 알파벳의 모든 글자들을 사용해서 만든 문장이다. "the quick brown fox jumps over a lazy dog"과 "jackdaws loves my big sphinx of quartz"은 팬그램이다. 문장이 주어졌을 때, 팬그램인지 아닌지를 알아내는 프로그램을 작성하시오.

 

입출력 예시

 

해결

const fs = require('fs');
const { start } = require('repl');
const stdin = (process.platform === 'linux'
    ? fs.readFileSync('/dev/stdin').toString()
    : `jackdawf loves my big quartz sphinx
abcdefghijklmnopqrstuvwxyz
hello world
*` 
).match(/[^\r\n]+/g);

const input = (() => {
let line = 0;
  return () => stdin[line++];
})();


let answer = [];

while (true) {
  const str = input().replace(/ /g,'').split('')
  if (str == '*') break;

  let temp = [];
  str.map((e) => {
    if (!temp.includes(e)){
      temp.push(e)    
    } 
 
  })
  
  const result = temp.length == 26? 'Y' : 'N'
  answer.push(result)
}

console.log(answer.join('\n'))

'개발 공부 > Algorithm' 카테고리의 다른 글

[백준/Node.js] 블랙잭  (0) 2023.03.22
[백준/Node.js] 직각 삼각형의 두 변  (0) 2023.03.21
[백준/Node.js] 탄산 음료  (0) 2023.03.17
[백준/Node.js] 팰린드롬수  (0) 2023.03.16
[백준/Node.js] 약수  (0) 2023.03.15

문제

준민이는 탄산 음료를 좋아한다. 탄산 음료를 사느라 돈을 다 써버렸기 때문에, 이제 준민이는 가진 돈이 없어 탄산 음료를 사먹을 수 없다.

준민이는 항상 법을 지키며 사는 사람이기 때문에, 아무리 탄산 음료가 먹고 싶어도 훔치지 않는다. 따라서, 법적으로 문제가 없는 방법으로 탄산 음료를 구매할 것이다.

마침 빈 병을 특정 개수만큼 가져가면, 새 병으로 바꾸어주는 이벤트가 진행중이다. 준민이는 길에서 빈 병을 열심히 찾은 뒤, 탄산 음료를 먹으려고 한다.

준민이가 현재 가지고 있는 빈 병의 수와 길에서 발견한 빈 병의 수, 새 병으로 바꾸는데 필요한 빈 병의 수가 주어졌을 때, 준민이가 탄산 음료를 몇 개 먹을 수 있는지 구하는 프로그램을 작성하시오.

 

입출력 예시

 

해결

const fs = require('fs');
const { start } = require('repl');
const stdin = (process.platform === 'linux'
    ? fs.readFileSync('/dev/stdin').toString()
    : `5 5 2` 
).match(/[^\r\n]+/g);

const input = (() => {
let line = 0;
  return () => stdin[line++];
})();

let s = input().split(' ').map(Number)

let hav = s[0]+s[1]
let chg = 0;
let i=0;
while (true) {
  if (hav < s[2]) break;

  const toChg = Math.floor(hav/s[2])
  const left = hav%s[2]
  chg+=toChg
  hav =toChg+left
  i++;
}

console.log(chg)

문제

어떤 단어를 뒤에서부터 읽어도 똑같다면 그 단어를 팰린드롬이라고 한다. 'radar', 'sees'는 팰린드롬이다.

수도 팰린드롬으로 취급할 수 있다. 수의 숫자들을 뒤에서부터 읽어도 같다면 그 수는 팰린드롬수다. 121, 12421 등은 팰린드롬수다. 123, 1231은 뒤에서부터 읽으면 다르므로 팰린드롬수가 아니다. 또한 10도 팰린드롬수가 아닌데, 앞에 무의미한 0이 올 수 있다면 010이 되어 팰린드롬수로 취급할 수도 있지만, 특별히 이번 문제에서는 무의미한 0이 앞에 올 수 없다고 하자.

 

입출력 예시

 

해결

const fs = require('fs');
const { start } = require('repl');
const stdin = (process.platform === 'linux'
    ? fs.readFileSync('/dev/stdin').toString()
    : `121
1231
12421
0` 
).match(/[^\r\n]+/g);

let s = stdin
let i = 0;
let answer = []
while (true) {
  if (Number(s[i]) === 0) {
    break;
  }
  const v = s[i].split('')
  let result = 'yes'
  for (let j=0; j < Math.floor(v.length/2); j++ ){

    if (v[j] != v[v.length-1-j]){
      result = 'no'
      break;
    }
  }
  answer.push(result)
  i++;
}
console.log(answer.join('\n'))

'개발 공부 > Algorithm' 카테고리의 다른 글

[백준/Node.js] 팬그램  (0) 2023.03.20
[백준/Node.js] 탄산 음료  (0) 2023.03.17
[백준/Node.js] 약수  (0) 2023.03.15
[백준/Node.js] 최대공약수와 최소공배수  (0) 2023.03.14
[백준/node.js] 그릇  (0) 2023.03.11

문제

양수 A가 N의 진짜 약수가 되려면, N이 A의 배수이고, A가 1과 N이 아니어야 한다. 어떤 수 N의 진짜 약수가 모두 주어질 때, N을 구하는 프로그램을 작성하시오.

 

입출력 예시

 

해결

const fs = require('fs');
const { start } = require('repl');
const stdin = (process.platform === 'linux'
    ? fs.readFileSync('/dev/stdin').toString()
    : `14
14 26456 2 28 13228 3307 7 23149 8 6614 46298 56 4 92596` 
).match(/[^\r\n]+/g);

const input = (() => {
  let line = 0;
  return () => stdin[line++];
})();

const s = Number(input())
const v = input().split(' ').map(Number).sort((a,b) => a-b)
const num = v[0] * v[v.length-1]
console.log(num)

문제

두 개의 자연수를 입력받아 최대 공약수와 최소 공배수를 출력하는 프로그램을 작성하시오.

 

입력

첫째 줄에는 두 개의 자연수가 주어진다. 이 둘은 10,000이하의 자연수이며 사이에 한 칸의 공백이 주어진다.

 

입출력 예시

 

해결

const fs = require('fs');
const { start } = require('repl');
const stdin = (process.platform === 'linux'
    ? fs.readFileSync('/dev/stdin').toString()
    : `24 18` 
).match(/[^\r\n]+/g);

const input = (() => {
  let line = 0;
  return () => stdin[line++];
})();

const s = input().split(' ').map(Number)

const solution = (n,m) => {
  const gcd = (a,b) => {
    if (b === 0) return a;
    return gcd(b, a%b)
  }

  const lcm = (a,b) => a*b / gcd(a,b);

  console.log(gcd(n,m))
  console.log(lcm(n,m))
  return;
}

solution (s[0],s[1])

문제

그릇을 바닥에 놓았을 때 그 높이는 10cm 이다. 그런데 두 개의 그릇을 같은 방향으로 포개면 그 높이는 5cm만 증가된다. 만일 그릇이 서로 반대방향으로 쌓이면 높이는 그릇만큼, 즉 10cm 늘어난다. 그릇을 괄호 기호로 나타내어 설명해보자. 편의상 그릇이 쌓여지는 방향은 왼쪽에서 오른쪽이라고 가정한다. 그림에서 ‘(’은 그릇이 바닥에 바로 놓인 상태를 나타내며, ‘)’은 그릇이 거꾸로 놓인 상태를 나타낸다.

만일 그릇이 포개진 모양이 ((((와 같다면 전체의 높이는 25cm가 된다. 왜냐하면 처음 바닥에 있는 그릇의 높이가 10cm이고 이후 같은 방향으로 3개의 그릇이 포개져 있으므로 늘어난 높이는 5+5+5=15 이기 때문이다. ()()와 같은 경우라면 그 높이는 10*4=40cm가 된다.

여러분은 입력에 주어진 모양대로 그릇을 쌓을 때 최종의 전체 그릇 높이를 계산해서 출력해야 한다. 즉 처음 입력으로 주어진 각 그릇의 방향은 바꿀 수 없다.

 

입출력 예시

 

 

해결

const fs = require('fs');
const { start } = require('repl');
const stdin = (process.platform === 'linux'
    ? fs.readFileSync('/dev/stdin').toString()
    : `((((` 
).match(/[^\r\n]+/g);

const input = (() => {
  let line = 0;
  return () => stdin[line++];
})();

const [s] = input().split(' ')
const dishes = s.split('')
let total = 0;

for (let i=0; i<dishes.length; i++){

  if (i===0 ){
    total += 10
  } else if (dishes[i] == dishes[i-1]){
    total += 5
  } else if (dishes[i] != dishes[i-1] && i != dishes.length){
    total += 10
  }
  
}

console.log(total)

1. java 설치 가능 리스트 검색

yum list java *

java-11-amazon-corretto.x86_64 

 

 

2. EC2에 java 11 설치

sudo yum install java-11-amazon-corretto.x86_64

 

3. java 버전 확인

java -version

+ Recent posts