1. ํ•จ์ˆ˜ ์ž‘์„ฑ

const add = (num1: number, num2: number):void => {
  console.log(num1 + num2)
}

 

 

2. ์„ ํƒ์  ๋งค๊ฐœ๋ณ€์ˆ˜

const hello = (name?: string) => {
  return `Hello, ${name || 'world'}`
}

hello() // Hello, world
hello('purple') // Hello, purple

 

 

3. ๋งค๊ฐœ๋ณ€์ˆ˜ ์˜ต์…˜๊ฐ’

// ์˜ถ์…˜๊ฐ’์ด ๋’ค์— ์žˆ๋Š” ๊ฒฝ์šฐ
const hello = (name: string, age?: number): string => {
 if (age !== undefined) {
  return `Hello, ${name}. You are ${age}.`;
 } else {
  return `Hello, ${name}.`;
 }
}

hello('Sam',30) // "Hello, Sam. You are 30." 
hello('Sam')    // "Hello, Sam." 

// ์˜ถ์…˜๊ฐ’์ด ์•ž์— ์žˆ๋Š”๊ฒฝ์šฐ
const hello2 = (age: number | undefined, name: string): string => {
 if (age !== undefined) {
  return `Hello, ${name}. You are ${age}.`;
 } else {
  return `Hello, ${name}.`;
 }
}
 
hello2(undefined,'Sam')  // "Hello, Sam."

 

 

4. ๋‚˜๋จธ์ง€ ๋งค๊ฐœ๋ณ€์ˆ˜

const add = (...nums: number[]) => {
 return nums.reduce((acc,cur) => acc + cur, 0)
}

add(1,2,3) // 6

 

 

5. This 

// 1. interface
interface User {
  name: string;
}

// 2. interface๋กœ ๊ฐ์ฒด Sam ์ƒ์„ฑ
const Sam: User = { name:'Sam'}

// 3. ํ•จ์ˆ˜ ์„ค์ • (ํ™”์‚ดํ‘œ ํ•จ์ˆ˜๋กœ ์ž‘์„ฑํ•˜๋ฉด ์˜ค๋ฅ˜๊ฐ€ ์ƒ๊ธด๋‹ค)
function showName(this:User ,age:number, gender:'m'|'f') {
  console.log(this.name, age, gender)
}

const getSame = showName.bind(Sam) // showNameํ•จ์ˆ˜๊ฐ€ Sam ๊ฐ์ฒด๋ฅผ ๋ณด์—ฌ์ฃผ๋„๋ก ํ•จ

getSame(30,'m') // "Sam",  30,  "m"

 

 

6. ๋งค๊ฐœ๋ณ€์ˆ˜ ํƒ€์ž…์— ๋”ฐ๋ผ ๊ฒฐ๊ณผ๊ฐ€ ๋‹ค๋ฅผ ๋•Œ

// 1. interface
interface User {
  name: string
  age: number
}

// 2. ์˜ค๋ฒ„๋กœ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํƒ€์ž…์— ๋”ฐ๋ฅธ ๊ฒฐ๊ณผ๋ฅผ ๋‹ค๋ฅผ๊ฒŒ ์„ค์ •
function join(name: string, age: number): User;
function join(name: string, age: string): string;
function join(name: string, age: number | string): User | string {
  if (typeof age === 'number') {
    return {
      name,
      age
    }
  } else {
    return "๋‚˜์ด๋ฅผ ์ˆซ์ž๋กœ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”"
  }
} 

const sam : User = join("Sam", 30)
const jane : string = join("Jane","30")

๋ฌธ์ œ

ํ”„๋กœ์•ผ๊ตฌํŒ€ ์šธ๋ฆผ ์ œ๋ฏธ๋‹ˆ์Šค๋Š” ์˜ค๋Š˜๋„ ์กŒ๋‹ค. ์ด๋ฒˆ์—๋Š” ์Šคํƒ€ํŠธ๋งํฌ ๊ฑธ๋ฆฌ๋ฒ„์Šค์˜ 4๋ฒˆํƒ€์ž๊ฐ€ ๋๋‚ด๊ธฐ ํ™ˆ๋Ÿฐ์„ ์ณ์„œ ์กŒ๋‹ค. ์šธ๋ฆผ ์ œ๋ฏธ๋‹ˆ์Šค์˜ ์—ด๋ ฌํ•œ ํŒฌ์ธ ์ง€์ˆ˜๋Š” ์†์œผ๋กœ ํ™”๋ฅผ ์ฐธ์œผ๋ฉฐ ์–ด๋–ค ์„ ์ˆ˜ ๋•Œ๋ฌธ์— ์กŒ๋Š”์ง€ ์ƒ๊ฐํ•ด๋ณด์•˜๋‹ค. ์ง€์ˆ˜๋Š” ํŒ€์ด ์—ญ์ „ํŒจ๋ฅผ ํ–ˆ๋‹ค๋ฉด ๋ถˆํŽœ ํˆฌ์ˆ˜์˜ ์ฑ…์ž„์ด๊ณ , ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋ฉด ํƒ€์ž์™€ ์„ ๋ฐœ ํˆฌ์ˆ˜์˜ ์ฑ…์ž„์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค.

์ง€์ˆ˜๋Š” ์˜ค๋Š˜ ๊ฒฝ๊ธฐ์—์„œ ์šธ๋ฆผ์ด ์–ด๋–ป๊ฒŒ ์กŒ๋Š”์ง€ ์ƒ๊ฐํ•ด๋ณด๋ ค ํ–ˆ์ง€๋งŒ, ๊ธฐ๋ถ„์ด ๋„ˆ๋ฌด ๋”๋Ÿฌ์›Œ์„œ ๋ญ˜ ํ•  ์˜์š•์ด ๋‚˜์ง€ ์•Š์•˜๋‹ค. ์ง€์ˆ˜๋ฅผ ๋„์™€ ์˜ค๋Š˜ ๊ฒฝ๊ธฐ์—์„œ ์šธ๋ฆผ ์ œ๋ฏธ๋‹ˆ์Šค๊ฐ€ ์—ญ์ „ํŒจ๋ฅผ ํ–ˆ๋Š”์ง€ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์—ฌ๋ผ. ์—ญ์ „ํŒจ๊ฐ€ ์„ฑ๋ฆฝํ•˜๋ ค๋ฉด ๊ฒฝ๊ธฐ ๋„์ค‘ ์šธ๋ฆผ ์ œ๋ฏธ๋‹ˆ์Šค๊ฐ€ ์ด๊ธฐ๊ณ  ์žˆ๋Š” ์ˆœ๊ฐ„์ด ์žˆ์–ด์•ผ ํ•œ๋‹ค.

 

์ž…์ถœ๋ ฅ ์˜ˆ์‹œ

 

ํ•ด๊ฒฐ

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

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

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

let jTeam = 0;
let sTeam = 0;
let flag = false; // ๊ฒฝ๊ธฐ์—์„œ ์Šน๋ฆฌํ•˜๋‹ค๊ฐ€ ์ง€๋Š” ๊ฒƒ ๋ณด์—ฌ์ฃผ๊ธฐ

let i = 0
while (i < j.length) {
  jTeam += j[i]
    
  if (jTeam > sTeam) {
    flag = true;
  }
  sTeam += s[i]

  i++
}

jTeam < sTeam && flag == true ? console.log('Yes') : console.log('No')

 

๋ฌธ์ œ

์นด์ง€๋…ธ์—์„œ ์ œ์ผ ์ธ๊ธฐ ์žˆ๋Š” ๊ฒŒ์ž„ ๋ธ”๋ž™์žญ์˜ ๊ทœ์น™์€ ์ƒ๋‹นํžˆ ์‰ฝ๋‹ค. ์นด๋“œ์˜ ํ•ฉ์ด 21์„ ๋„˜์ง€ ์•Š๋Š” ํ•œ๋„ ๋‚ด์—์„œ, ์นด๋“œ์˜ ํ•ฉ์„ ์ตœ๋Œ€ํ•œ ํฌ๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒŒ์ž„์ด๋‹ค. ๋ธ”๋ž™์žญ์€ ์นด์ง€๋…ธ๋งˆ๋‹ค ๋‹ค์–‘ํ•œ ๊ทœ์ •์ด ์žˆ๋‹ค.

ํ•œ๊ตญ ์ตœ๊ณ ์˜ ๋ธ”๋ž™์žญ ๊ณ ์ˆ˜ ๊น€์ •์ธ์€ ์ƒˆ๋กœ์šด ๋ธ”๋ž™์žญ ๊ทœ์น™์„ ๋งŒ๋“ค์–ด ์ƒ๊ทผ, ์ฐฝ์˜์ด์™€ ๊ฒŒ์ž„ํ•˜๋ ค๊ณ  ํ•œ๋‹ค.

๊น€์ •์ธ ๋ฒ„์ „์˜ ๋ธ”๋ž™์žญ์—์„œ ๊ฐ ์นด๋“œ์—๋Š” ์–‘์˜ ์ •์ˆ˜๊ฐ€ ์“ฐ์—ฌ ์žˆ๋‹ค. ๊ทธ ๋‹ค์Œ, ๋”œ๋Ÿฌ๋Š” N์žฅ์˜ ์นด๋“œ๋ฅผ ๋ชจ๋‘ ์ˆซ์ž๊ฐ€ ๋ณด์ด๋„๋ก ๋ฐ”๋‹ฅ์— ๋†“๋Š”๋‹ค. ๊ทธ๋Ÿฐ ํ›„์— ๋”œ๋Ÿฌ๋Š” ์ˆซ์ž M์„ ํฌ๊ฒŒ ์™ธ์นœ๋‹ค.

์ด์ œ ํ”Œ๋ ˆ์ด์–ด๋Š” ์ œํ•œ๋œ ์‹œ๊ฐ„ ์•ˆ์— N์žฅ์˜ ์นด๋“œ ์ค‘์—์„œ 3์žฅ์˜ ์นด๋“œ๋ฅผ ๊ณจ๋ผ์•ผ ํ•œ๋‹ค. ๋ธ”๋ž™์žญ ๋ณ€ํ˜• ๊ฒŒ์ž„์ด๊ธฐ ๋•Œ๋ฌธ์—, ํ”Œ๋ ˆ์ด์–ด๊ฐ€ ๊ณ ๋ฅธ ์นด๋“œ์˜ ํ•ฉ์€ M์„ ๋„˜์ง€ ์•Š์œผ๋ฉด์„œ M๊ณผ ์ตœ๋Œ€ํ•œ ๊ฐ€๊น๊ฒŒ ๋งŒ๋“ค์–ด์•ผ ํ•œ๋‹ค.

N์žฅ์˜ ์นด๋“œ์— ์จ์ ธ ์žˆ๋Š” ์ˆซ์ž๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, M์„ ๋„˜์ง€ ์•Š์œผ๋ฉด์„œ M์— ์ตœ๋Œ€ํ•œ ๊ฐ€๊นŒ์šด ์นด๋“œ 3์žฅ์˜ ํ•ฉ์„ ๊ตฌํ•ด ์ถœ๋ ฅํ•˜์‹œ์˜ค.

 

 

์ž…์ถœ๋ ฅ ์˜ˆ์‹œ

 

ํ•ด๊ฒฐ

const fs = require('fs');
const { start } = require('repl');
const stdin = (process.platform === 'linux'
    ? fs.readFileSync('/dev/stdin').toString()
    : `10 500
93 181 245 214 315 36 185 138 216 295` 
).match(/[^\r\n]+/g);

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

const [total, limit] = input().split(' ').map(Number)
const card = input().split(' ').map(Number)

let sum = 0; 

for (let i=0; i<total; i++){
  if (limit < card[i]) continue
  
  for (let j=i+1; j<total; j++){
   if (limit < card[i] + card[j]) continue
    
    for (let z=j+1; z<total; z++){
      if (limit < card[i] + card[j] + card[z]) continue

      if (sum < card[i] + card[j] + card[z]){
        sum = card[i] + card[j] + card[z]
      }
    }
  }
}

console.log(sum)

+ Recent posts