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

 

문제 설명

String형 배열 seoul의 element중 "Kim"의 위치 x를 찾아, "김서방은 x에 있다"는 String을 반환하는 함수, solution을 완성하세요. seoul에 "Kim"은 오직 한 번만 나타나며 잘못된 값이 입력되는 경우는 없습니다.

 

제한사항

  • seoul은 길이 1 이상, 1000 이하인 배열입니다.
  • seoul의 원소는 길이 1 이상, 20 이하인 문자열입니다.
  • "Kim"은 반드시 seoul 안에 포함되어 있습니다.

 

indexOf(): 호출한 string 객체에서 주어진 값과 일치하는 첫 번째 인덱스를 반환한다. 일치하는 값이 없으면 -1을 반환한다.

function solution(seoul) {
    return '김서방은 ' + seoul.indexOf('Kim') + '에 있다'
}

sort() 메서드는 배열의 요소를 적절한 위치에 정렬한 후 그 배열을 반환한다. 기본 정렬 순서는 문자열의 유니코드 코드 포인트를 따른다.

 

  • sort()

sort()만 사용할 경우 유니코드 순서에 따라서 오름차순으로 정렬되기 때문에 아래와 같은 결과가 출력된다.

const str = ['dog', 'Cat', 'apple', 'car', 'Banana', 'eye']
const num = [10, 7, 1280, 720, 456, 123]

str.sort() // [ 'Banana', 'Cat', 'apple', 'car', 'dog', 'eye' ]
num.sort() // [ 10, 123, 1280, 456, 7, 720 ]

 

  • sort() 숫자 오름차순
const num = [10, 7, 1280, 720, 456, 123]

num.sort((a, b) => a - b) // [ 7, 10, 123, 456, 720, 1280 ]

 

  • sort() 숫자 내림차순
const num = [10, 7, 1280, 720, 456, 123]

num.sort((a, b) => b - a) // [ 1280, 720, 456, 123, 10, 7 ]

 

  • sort() 문자열 오름차순

영어 대문자, 소문자가 섞여있을 경우, 대문자가 소문자보다 앞에 오도록 정렬된다.

숫자 > 영어 대문자 > 영어 소문자 > 한글

const str1 = ['dog', 'Cat', 'apple', 'car', 'Banana', 'eye']
const str2 = ['강아지', '고양이', '사과', '자동차', '바나나', '눈']
const str3 = ['dog', '고양이', '사과', '자동차', 'Banana', '눈', '100종원']

str1.sort((a, b) => a > b ? 1 : -1) // [ 'Banana', 'Cat', 'apple', 'car', 'dog', 'eye' ]
str2.sort((a, b) => a > b ? 1 : -1) // [ '강아지', '고양이', '눈', '바나나', '사과', '자동차' ]
str3.sort((a, b) => a > b ? 1 : -1) // ['100종원', 'Banana', 'dog', '고양이', '눈', '사과', '자동차']

 

  • sort() 문자열 내림차순

영어 대문자, 소문자가 섞여있을 경우, 대문자가 소문자보다 뒤에 오도록 정렬된다.

한글 > 영어 소문자 > 영어 대문자 > 숫자

const str1 = ['dog', 'Cat', 'apple', 'car', 'Banana', 'eye']
const str2 = ['강아지', '고양이', '사과', '자동차', '바나나', '눈']
const str3 = ['dog', '고양이', '사과', '자동차', 'Banana', '눈', '100종원']

str1.sort((a, b) => a > b ? -1 : 1) // [ 'eye', 'dog', 'car', 'apple', 'Cat', 'Banana' ]
str2.sort((a, b) => a > b ? -1 : 1) // [ '자동차', '사과', '바나나', '눈', '고양이', '강아지' ]
str3.sort((a, b) => a > b ? -1 : 1) // ['자동차', '사과', '눈', '고양이', 'dog', 'Banana', '100종원']

 

  • sort() 대소문자 구분없이 오름차순

대소문자 구분 없이 정렬해주는 함수는 없기 때문에 toLowerCawe() 또는 toUpperCase() 메서드를 사용해서 소문자 또는 대문자로 변경한 후 비교해 정렬한다.

const str = ['dog', 'Cat', 'apple', 'car', 'Banana', 'eye']

str1.sort((a, b) => {
    const upperCaseA = a.toUpperCase()
    const upperCaseB = b.toUpperCase()

    if(upperCaseA > upperCaseB) return 1
    if(upperCaseA < upperCaseB) return -1
    if(upperCaseA === upperCaseB) return 0
})

// [ 'apple', 'Banana', 'car', 'Cat', 'dog', 'eye' ]

 

  • sort() 대소문자 구분없이 내림차순
const str = ['dog', 'Cat', 'apple', 'car', 'Banana', 'eye']

str.sort((a, b) => {
    const upperCaseA = a.toUpperCase()
    const upperCaseB = b.toUpperCase()

    if(upperCaseA > upperCaseB) return -1
    if(upperCaseA < upperCaseB) return 1
    if(upperCaseA === upperCaseB) return 0
})

// [ 'eye', 'dog', 'Cat', 'car', 'Banana', 'apple' ]

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

 

문제 설명

함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다.

 

제한조건

  • n은 1이상 8000000000 이하인 자연수입니다.

 

function solution(n) {
    return Number([...String(n)].sort((a, b) => b - a).join(''))
}

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

 

문제 설명

대문자와 소문자가 섞여있는 문자열 s가 주어집니다. s에 'p'의 개수와 'y'의 개수를 비교해 같으면 True, 다르면 False를 return 하는 solution를 완성하세요. 'p', 'y' 모두 하나도 없는 경우는 항상 True를 리턴합니다. 단, 개수를 비교할 때 대문자와 소문자는 구별하지 않습니다.
예를 들어 s가 "pPoooyY"면 true를 return하고 "Pyy"라면 false를 return합니다.

 

제한사항

  • 문자열 s의 길이 : 50 이하의 자연수
  • 문자열 s는 알파벳으로만 이루어져 있습니다.

 

function solution(s){
    const arr = [...s.toLowerCase()]
    const p = arr.filter(list => list === 'p')
    const y = arr.filter(list => list === 'y')
    
    return p.length === y.length ? true : false
}

문자열(String)을 배열로 만들기

  • 전개 연산자(Spread Operator)

전개 연산자를 사용하면 배열이나 문자열 같이 반복 가능한 0개 이상의 인수 또는 요소로 확장하여, 0개 이상의 키-값 쌍으로 객체를 확장시킬 수 있다.

const str = 'abc'
const arrStr = [...str]

arrStr // ['a', 'b', 'c']

 

  • split()

split() 메서드는 string 객체를 지정한 구분자를 이용하여 여러 개의 문자열로 나눈다.

const str = 'abc'
const arrStr = str.split('')

arrStr //  ['a', 'b', 'c']

 

  • Array.from()

Array.from() 메서드는 유사 배열 객체나 반복 가능한 객체를 얕게 복사해 새로운 배열을 만든다.

Array.from('abc') // ['a', 'b', 'c']

 

숫자(Number)을 배열로 만들기

map, split 등의 메소드들이 문자열에서만 사용이 가능하기 때문에 타입을 문자열로 바꾼 후, 다시 숫자로 바꿔준다.

 

  • String() + Number() + map()

String() 함수를 사용하여 다른 타입의 값을 문자열로 바꿀 수 있다.

Number() 함수를 사용하여 다른 타입의 값을 숫자로 바꿀 수 있다.

map() 메서드는 배열 내의 모든 요소에 대하여 주어진 함수를 호출한 결과를 모아 새로운 배열로 반환한다.

const num = 123
const arrNum = [...String(num)].map(Number)

arrNum // [1, 2, 3]

 

  • toString() + map()

toString() 메서드는 문자열을 반환한다.

const num = 123
const arrNum = num.toString().split('').map(Number)

arrNum // [1, 2, 3]

 

  • 문자열 더하기 + Array.from()

숫자에 문자를 더하면 타입이 문자열로 바뀐다.

const num = 123
const arrNum = (num + '').split('')

Array.from(arrNum, Number) // [1, 2, 3]

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

 

문제 설명

정수를 담고 있는 배열 arr의 평균값을 return하는 함수, solution을 완성해보세요.

 

제한사항

  • arr은 길이 1 이상, 100 이하인 배열입니다.
  • arr의 원소는 -10,000 이상 10,000 이하인 정수입니다.

 

function solution(arr) {
    return arr.reduce((arr, cur) => arr + cur) / arr.length
}
  • 소수점 자리수 올림

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
}

+ Recent posts