Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
71 changes: 71 additions & 0 deletions [Lily]4-4w/[PGS]숫자_문자열과_영단어.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
function solution(s) {
const words = [
'zero',
'one',
'two',
'three',
'four',
'five',
'six',
'seven',
'eight',
'nine'
]

const str = s.split('')
let word = ''
let answer = ''

for (let i = 0; i < str.length; i++) {
if (isNaN(str[i])) {
word += str[i]
} else {
answer += str[i]
continue
}

for (let j = 0; j < words.length; j++) {
if (word === words[j]) {
answer += j

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

객체로 키, 값을 주는것만 생각하고 배열로 간단하게 인덱스 값으로 해당 words의 숫자를 주는 생각을 못했네요. 하드코딩 적어지고 심플하고 좋네요!

word = ''
break
}
}
}

return Number(answer)
}

solution('one4seveneight')

// 1. 숫자가 아니어야 한다.
// 2. 숫자이면 탐색하지 않고 바로 answer에 넣는다.

// "one4seveneight" 1478
// "23four5six7" 234567
// "2three45sixseven" 234567
// "123" 123

function solution(s) {
let numbers = [
'zero',
'one',
'two',
'three',
'four',
'five',
'six',
'seven',
'eight',
'nine'
]

let answer = s

for (let i = 0; i < numbers.length; i++) {
let arr = answer.split(numbers[i])
answer = arr.join(i)
Comment on lines +66 to +67

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

와... 배열 메서드 활용 짱이네요.. join은 진짜 생각도 못했네

}

return Number(answer)
}
26 changes: 26 additions & 0 deletions [Lily]4-4w/[PGS]짝지어_제거하기.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
function solution(s) {
const stack = [0]

for (let i = 0; i < s.length; i++) {
if (stack[stack.length - 1] === s[i]) {
stack.pop()
continue
}

stack.push(s[i])
}

return stack.length === 1 ? 1 : 0
}

solution('baabaa')
// return 1

// 1. 문자열에서 같은 알파벳이 2개 붙어 있는 짝을 찾는다.
// 2. 그 둘을 제거한 뒤, 앞 뒤로 문자열을 이어 붙인다.
// 3. 위 과정을 반복한다.
// 4. 반복 문자열을 모두 제거했다면 짝지어 제거하기가 종료된다.
// 5. 문자열이 모두 제거되면 1, 아니면 0을 리턴한다.

// 문자열이 엄청 작거나 엄청 크거나에 대해서 생각해봐야 한다.
// 문자열이 아예 없을 수도 있다?
21 changes: 21 additions & 0 deletions [Lily]4-4w/[PGS]크기가_작은_부분_문자열.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
function solution(t, p) {
const len = p.length
let answer = 0

for (let i = 0; i <= t.length - len; i++) {
const numbers = t.slice(i, i + p.length)
if (+numbers <= +p) {

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

헉 Number 타입으로 바꿔주는 디테일 배워갑니다!!!

answer++
}
}

return answer
}

solution('3141592', '271')
// solution('500220839878', '7')
// solution('3141592', '271')
// t p result
// "3141592" "271" 2
// "500220839878" "7" 8
// "10203" "15" 3
40 changes: 40 additions & 0 deletions [Lily]4w/[PGS]키패드 누르기.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
solution([1, 3, 4, 5, 8, 2, 1, 4, 5, 9, 5], 'right')
// right
// "LRLLLRLLRRL"

function solution(numbers, hand) {
var answer = ''
const left = [1, 4, 7]
const right = [3, 6, 9]
let leftPosition = 0
let rightPosition = 0

numbers.forEach(number => {
if (left.includes(number)) {
leftPosition = number
answer += 'L'
return
}

if (right.includes(number)) {
rightPosition = number
answer += 'R'
return
}

const diffLeft = Math.abs(number - leftPosition)
const diffRight = Math.abs(number - rightPosition)

if (diffLeft < diffRight) {
answer += 'L'
leftPosition = number
} else if (diffLeft > diffRight) {
answer += 'R'
rightPosition = number
} else {
answer += hand === 'right' ? 'R' : 'L'
}
})

return answer
}