• 소수점 자리수 올림

Math.ceil() 메서드는 주어진 숫자보다 크거나 같은 숫자 중 가장 작은 숫자를 반환한다.

Math.ceil(1.2) // 2
Math.ceil(1.8) // 2

Math.ceil(-1.2) // -1
Math.ceil(-1.8) // -1

 

  • 소수점 자리수 내림

Math.floor() 메서드는 주어진 숫자와 같거나 작은 정수 중에서 가장 큰 수를 반환한다.

Math.floor(1.2) // 1
Math.floor(1.8) // 1

Math.floor(-1.2) // -2
Math.floor(-1.8) // -2

 

  • 소수점 자리수 반올림

Math.round() 메서드는 입력값을 반올림한 수와 가장 가까운 정수 값을 반환한다.

Math.round(1.2) // 1
Math.round(1.5) // 2
Math.round(1.8) // 2

Math.round(-1.2) // -1
Math.round(-1.5) // -1
Math.round(-1.8) // -2

 

  • 소수점 제거

Math.trunc() 메서드는 주어진 값의 소수 부분을 제거하고, 숫자의 정수 부분을 반환한다.

Math.trunc(1.2) // 1
Math.trunc(1.8) // 1

 

Math.floor() / Math.trunc()의 차이점

Math.floor() 메서드는 수학적 계산을 통해 양수, 음수 내림을 적용하는데

Math.trunc() 메서드는 소수점 이하를 전부 제거해 음수의 경우에도 -10을 반환한다.

Math.floor(5.6789) // 5
Math.trunc(5.6789) // 5

Math.floor(-10.12345) // -11
Math.trunc(-10.12345) // -10

 

  • 소수점 자르기

toFixed() 메서드는 숫자를 고정 소수점 표기법으로 표시한다.

const num1 = 0.1234
const num2 = 5.6789

num1.toFixed(1) // '0.1'
num2.toFixed(2) // '5.68'

 

  • 특정 자리수에서 올림
const number = 1.2345

const temp1 = number * 100 // 123.45
const temp2 = Math.ceil(temp1) // 124

const result = temp2 / 100 // 1.24

 

  • 특정 자리수에서 내림
const number = 1.2345

const temp1 = number * 100 // 123.45
const temp2 = Math.floor(temp1) // 123

const result = temp2 / 100 // 1.23

 

Math는 수학적인 상수와 함수를 위한 속성과 메서드를 가진 내장 객체이다. 함수 객체가 아니고, Number 자료형만 지원한다.

 

  • Math.abs(x)

숫자의 절대값을 반환한다.

 

  • Math.ceil(x)

수보다 크거나 같은 수 중에서 가장 작은 정수를 반환한다. (소수점 올림)

 

  • Math.floor(x)

인수보다 작거나 같은 수 중에서 가장 큰 정수를 반환한다. (소수점 내림)

 

  • Math.round(x)

숫자에서 가장 가까운 정수를 반환한다. (소수점 반올림)

 

  • Math.trunc(x)

소수 자리수를 제거하여 숫자의 정수 부분을 반환한다.

 

  • Math.min([x, ...])

0개 이상의 인수에서 제일 작은 수를 반환한다.

 

  • Math.max([x, ...])

0개 이상의 인수에서 제일 큰 수를 반환한다.

 

  • Math.random()

0과 1 사이의 난수를 반환한다.

https://school.programmers.co.kr/learn/courses/30/lessons/120921

 

문제 설명

문자열 "hello"에서 각 문자를 오른쪽으로 한 칸씩 밀고 마지막 문자는 맨 앞으로 이동시키면 "ohell"이 됩니다. 이것을 문자열을 민다고 정의한다면 문자열 A와 B가 매개변수로 주어질 때, A를 밀어서 B가 될 수 있다면 밀어야 하는 최소 횟수를 return하고 밀어서 B가 될 수 없으면 -1을 return 하도록 solution 함수를 완성해보세요.

 

제한사항

  • 0 < A의 길이 = B의 길이 < 100
  • A, B는 알파벳 소문자로 이루어져 있습니다.

 

pop(): 배열에서 마지막 요소를 제거하고, 그 요소를 반환한다.

unshift(): 새로운 요소를 배열의 맨 앞쪽에 추가하고, 새로운 길이를 반환한다.

function solution(A, B) {
    let arrA = [...A]
    
    for(i=1; i<arrA.length; i++) {
        if(A === B) {
            return 0
        } else {
            arrA.unshift(arrA.pop())
            
            if(arrA.join('') === B) {
                return i
            }
        }
    }
    
    return -1
}

https://school.programmers.co.kr/learn/courses/30/lessons/120956

 

문제 설명

머쓱이는 태어난 지 6개월 된 조카를 돌보고 있습니다. 조카는 아직 "aya", "ye", "woo", "ma" 네 가지 발음을 최대 한 번씩 사용해 조합한(이어 붙인) 발음밖에 하지 못합니다. 문자열 배열 babbling이 매개변수로 주어질 때, 머쓱이의 조카가 발음할 수 있는 단어의 개수를 return하도록 solution 함수를 완성해주세요.

 

제한사항

  • 1 ≤ babbling의 길이 ≤ 100
  • 1 ≤ babbling[i]의 길이 ≤ 15
  • babbling의 각 문자열에서 "aya", "ye", "woo", "ma"는 각각 최대 한 번씩만 등장합니다.
  • 즉, 각 문자열의 가능한 모든 부분 문자열 중에서 "aya", "ye", "woo", "ma"가 한 번씩만 등장합니다.
  • 문자열은 알파벳 소문자로만 이루어져 있습니다.

 

단어를 "aya", "ye", "woo", "ma"로 다 발음할 수 있어야 한다.
단어 중 일부만 발음할 수 있어도 발음할 수 있는 단어가 아니다.

function solution(babbling) {
    let words = []
    let answer = 0
    
    for(i=0; i<babbling.length; i++){
        words[i] = babbling[i].replace(/aya|ye|woo|ma/g, '')
        
        if(words[i] === '') {
            answer++
        }
    }
    
    return answer
}

https://school.programmers.co.kr/learn/courses/30/lessons/120924

 

문제 설명

등차수열 혹은 등비수열 common이 매개변수로 주어질 때, 마지막 원소 다음으로 올 숫자를 return 하도록 solution 함수를 완성해보세요.

 

제한사항

  • 2 < common의 길이 < 1,000
  • -1,000 < common의 원소 < 2,000
  • common의 원소는 모두 정수입니다.
  • 등차수열 혹은 등비수열이 아닌 경우는 없습니다.
  • 등비수열인 경우 공비는 0이 아닌 정수입니다.

 

등차수열(+): 연속하는 두 항의 차이가 모두 일정한 수열
등비수열(*): 각 항이 초항(첫번째 값)과 일정한 비를 가지는 수열

function solution(common) {
    const lastNum = Number(common.slice(-1))
    
    // 등차
    if(common[1] - common[0] === common[2] - common[1]) {
        return lastNum + (common[1] - common[0])
    }
    
    // 등비
    if(common[1] / common[0] === common[2] / common[1]) {
        return lastNum * (common[1] / common[0])
    }
}

https://school.programmers.co.kr/learn/courses/30/lessons/120866

 

문제 설명

다음 그림과 같이 지뢰가 있는 지역과 지뢰에 인접한 위, 아래, 좌, 우 대각선 칸을 모두 위험지역으로 분류합니다.


지뢰는 2차원 배열 board에 1로 표시되어 있고 board에는 지뢰가 매설 된 지역 1과, 지뢰가 없는 지역 0만 존재합니다.
지뢰가 매설된 지역의 지도 board가 매개변수로 주어질 때, 안전한 지역의 칸 수를 return하도록 solution 함수를 완성해주세요.

 

제한사항

  • board는 n * n 배열입니다.
  • 1 ≤ n ≤ 100
  • 지뢰는 1로 표시되어 있습니다.
  • board에는 지뢰가 있는 지역 1과 지뢰가 없는 지역 0만 존재합니다.

 

새로운 2차원 배열을 만들어 지뢰와 위험지역을 모두 1로 표시한다.

0인 지역이 위험지역이 아니므로 0의 개수가 안전한 지역이다.

function solution(board) {
    // 위험 지역을 표시할 새로운 2차원 배열
    let dangerArr = Array.from(Array(board.length), () => Array(board.length).fill(0))
    const length = board.length
    
    for(i=0; i<length; i++) {
        for(j=0; j<length; j++) {            
            if(board[i][j] === 1) {
                dangerArr[i][j] = 1

                if(i > 0) {   
                    dangerArr[i-1][j-1] = 1
                    dangerArr[i-1][j] = 1
                    dangerArr[i-1][j+1] = 1   
                    
                    dangerArr[i][j-1] = 1
                    dangerArr[i][j] = 1
                    dangerArr[i][j+1] = 1  
                }
                
                if(i + 1 < length) {
                    dangerArr[i][j-1] = 1
                    dangerArr[i][j] = 1
                    dangerArr[i][j+1] = 1  
                    
                    dangerArr[i+1][j-1] = 1
                    dangerArr[i+1][j] = 1
                    dangerArr[i+1][j+1] = 1  
                }
            }
        }
    }
    
    // 안전지대 
    let safe = 0
    
    for(x=0; x<length; x++) {
        for(y=0; y<length; y++) {
            if(dangerArr[x][y] === 0) {
                safe++
            }
        }
    }
    
    return safe
}

https://school.programmers.co.kr/learn/courses/30/lessons/120923

 

문제 설명

연속된 세 개의 정수를 더해 12가 되는 경우는 3, 4, 5입니다. 두 정수 num과 total이 주어집니다. 연속된 수 num개를 더한 값이 total이 될 때, 정수 배열을 오름차순으로 담아 return하도록 solution함수를 완성해보세요.

 

제한사항

  • 1 ≤ num ≤ 100
  • 0 ≤ total ≤ 1000
  • num개의 연속된 수를 더하여 total이 될 수 없는 테스트 케이스는 없습니다.

 

function solution(num, total) {
    let result = []
    
    // 가운데 값
    const avg = Math.ceil(total / num)

    // 가운데 값이 짝수인지 홀수인지에 따라서 시작 위치 구하기
    const x = Math.trunc(num / 2)

    // 시작 값
    const startNum = avg - x 

    for(i=0; i<num; i++){
        result.push(startNum + i)
    }
    
    return result
}

https://school.programmers.co.kr/learn/courses/30/lessons/12931

 

문제 설명

정수 n이 매개변수로 주어질 때 n의 각 자리 숫자의 합을 return하도록 solution 함수를 완성해주세요.

 

제한사항

  • 0 ≤ n ≤ 1,000,000

 

function solution(n) {
    let arr = (Array.from(String(n))).map(Number)
    
    return arr.reduce((arr, cur) => arr + cur)
}

https://school.programmers.co.kr/learn/courses/30/lessons/120809

 

문제 설명

정수 배열 numbers가 매개변수로 주어집니다. numbers의 각 원소에 두배한 원소를 가진 배열을 return하도록 solution 함수를 완성해주세요.

 

제한사항

  • -10,000 ≤ numbers의 원소 ≤ 10,000
  • 1 ≤ numbers의 길이 ≤ 1,000

 

function solution(numbers) {
    return numbers.map(list => list * 2)
}

 

https://school.programmers.co.kr/learn/courses/30/lessons/120849

 

문제 설명

영어에선 a, e, i, o, u 다섯 가지 알파벳을 모음으로 분류합니다. 문자열 my_string이 매개변수로 주어질 때 모음을 제거한 문자열을 return하도록 solution 함수를 완성해주세요.

 

제한사항

  • my_string은 소문자와 공백으로 이루어져 있습니다.
  • 1 ≤ my_string의 길이 ≤ 1,000

 

function solution(my_string) {
    const regex  = /a|e|i|o|u/g
    
    return my_string.replace(regex, '')
}

+ Recent posts