function vowels(str) {
let counter = 0
for (const char of str.toLowerCase()) {
if ('aeiou'.includes(char)) counter++
}
return counter
}
거꾸로 뒤집기
스트링을 거꾸로 출력하기 ("apple" → "elppa")
#1 reverse()
function reverse(str) {
return str.split('').reverse().join('')
}
#2 for-of loop
function reverse(str) {
let reversed = ''
for (const char of str) {
reversed = char + reversed
}
return reversed
}
#3 reduce()
function reverse(str) {
return str.split('').reduce((reversed, char) => char + reversed, '')
}
Palindrome 체크
거꾸로 읽어도 똑같은 단어인지 체크하여 true/false로 반환하기 ("abba" → returns true)
#1 reverse()
원래 str이 뒤집은 str과 동일한가?
function palindrom(str) {
return str === str.split('').reverse().join('')
}
#2 every()
첫번째 문자 - 뒤에서 첫번째 문자, 두번째 문자 - 뒤에서 두번째 문자 ... 차례로 비교
function palindrome(str) {
return str.split('').every((char, i) => {
return char === str[str.length - 1 - i]
})
}
Int 뒤집기
입력된 integer를 거꾸로 뒤집은 integer를 반환 (ex 15 => 51)
function reverseInt(n) {
const reversed = n.toString().split('').reverse().join('')
return parseInt(reversed) * Math.sign(n)
}
가장 많이 나온 문자 찾기
예를 들어 "abbbbbc"가 입력된 경우 가장 많이 나온 문자인 b를 반환하기
# Char Map {문자: 나온 횟수}
function maxChar(str) {
const chars = {}
let max = 0
let maxKey = ''
for (const char of str) {
chars[char] = chars[char] + 1 || 1
}
for (const key in chars) {
if (chars[key] > max) {
max = chars[key]
maxKey = key
}
}
return maxKey
}
Anagrams 체크
두개 단어가 문자열 조합이 동일한지 체크하여 true/false로 반환 (ex dormitory, dirtyroom → return true)
# sort()
문자가 아닌 것을 찾아 없애고 소문자로 통일
function anagrams(stringA, stringB) {
return sortString(stringA) === sortString(stringB)
}
function sortString(str) {
return str.replace(/[^\w]/g, '').toLowerCase().split('').sort().join('')
}
문장 대문자로 바꾸기
입력된 문장에서 가장 첫 문자와 공백 뒤의 문자를 대문자로 바꾸기
#1 slice()
function capitalize(str) {
let words = []
for (word of str.split(' ')) {
words.push(word.slice(0, 1).toUpperCase() + word.slice(1))
}
return words.join(' ')
}
#2 for loop
function capitalize(str) {
let result = str[0].toUpperCase()
for (let i = 1; i < str.length; i++) {
if (str[i - 1] === ' ') {
result += str[i].toUpperCase()
} else {
result += str[i]
}
}
return result
}
모음 찾기
a, e, i, o, u 갯수 반환하기
#1 includes - my solution (참고로 includes는 array도 가능)
function vowels(str) {
let counter = 0
for (const char of str.toLowerCase()) {
if ('aeiou'.includes(char)) counter++
}
return counter
}
#2 regex
function vowels(str) {
//match 결과가 없으면 null을 반환
const matches = str.match(/[aeiou]/gi)
return matches ? matches.length : 0
}
'소프트웨어 개발 > 자료구조 & 알고리즘' 카테고리의 다른 글
큐/스택 알고리즘 문제 with JavaScript (0) | 2021.03.07 |
---|---|
알고리즘 문제 with JavaScript (0) | 2021.02.28 |
Array 알고리즘 문제 with JavaScript (0) | 2021.02.28 |
댓글