Introduction to Javascript Algorithm Problem Solving (Coding Test Preparation)
5. String Compression
Object와 Set을 이용해 풀어봤습니다.
117
2 asked
function solution(s) {
const dic = {}
s.split("").forEach((el) => {
if (dic[el]) {
dic[el]++
} else {
dic[el] = 1
}
})
const newStr = [...new Set(str.split(""))]
return newStr
.map((el) => {
if (dic[el] && dic[el] !== 1) {
return (el += dic[el])
} else {
return el
}
})
.join("")
}
let str = "KKHSSSSSSSE"
console.log(solution(str))
먼저 오브젝트에 몇 개의 문자가 몇 번 등록되어있는지 저장한 후 set으로 중복을 제거해서 뼈대를 만들었습니다.
그 다음으로 반복문을 이용해서 오브젝트를 탐색해 뼈대에 문자열을 합성해주는 방식으로 풀었습니다. 답안에 비해 좀 복잡한 것 같은데 놓치거나 시간,공간복잡성에서 손해가 클까요?
Answer 2
0
안녕하세요^^
위 방식으로 하면
let str = "KKSSSKKK"str이 위와 같을 때 K5S3로 출력하게 됩니다. 이 문제는 연속된 같은 문자를 압축하는 것입니다.
답은 K2S3K3 입니다.
0
안녕하세요, 인프런 AI 인턴입니다. y_rzzz님.
작성하신 코드는 문자열을 주어진 형식으로 압축하는 방식으로 보이는데, 몇 가지 기존 질문과 답변이 유사한 점이 있어 조금 더 이해하는 데 도움을 드릴 수 있을 것 같습니다.
주어진 코드는 입력 문자열 내의 각 문자 등장 횟수를 객체 dic에 저장하고, 중복 문자를 제거하여 newStr을 만듭니다. 이후 newStr 안의 각 문자에 등장 횟수를 합성하여 결과 문자열을 생성합니다.
몇 가지 참고할 수 있는 유사한 질문들이 있습니다:
-
- 이 질문에서는 비슷한 방식으로 문자열 압축 문제를 해결한 사례를 다루고 있습니다. 질문자가 가진 의문점과 비슷하게, 코드의 복잡성이나 효율성을 질문하고 있습니다.
- 이 질문에서는 비슷한 방식으로 문자열 압축 문제를 해결한 사례를 다루고 있습니다. 질문자가 가진 의문점과 비슷하게, 코드의 복잡성이나 효율성을 질문하고 있습니다.
-
Set자료형을 사용해 중복 제거를 수행하고, 혹시 이 방법이 괜찮을지에 대한 질문입니다.
현재 코드에서는 객체와 Set을 활용하여 문제를 해결하려는 시도를 볼 수 있습니다. 일반적으로 객체를 이용한 문자 횟수 카운팅은 효율적으로 작동합니다. 그러나 주의할 점은 다음과 같습니다:
- Set을 사용하여 중복을 제거한 부분에서는 문자열의 각 문자를 한 번만 남기게 됩니다. 이는 중복 문자의 카운트를 처리하는 방식과 조금 상충되기도 합니다. 따라서 문자열 전체를 다시 조합할 때 의도한 결과가 맞는지 확인해 보셔야 합니다.
- 복잡성 관점에서는, 현재 코드가 O(N) 수준의 복잡도를 가질 것으로 보입니다(N이 문자열 길이). 객체와 Set의 사용으로 인해 큰 손해가 발생할 것 같지는 않습니다. 기존의 다른 방안을 사용해도 큰 차이는 없을 것으로 보입니다.
결론적으로, 제시하신 코드 방식도 유효하지만, 요구되는 결과와 정확하게 일치하는지는 추가적인 테스트로 확인이 필요할 수 있습니다. 효율성에서 큰 차이가 없으므로 만족스럽게 작동한다면 이 방법도 괜찮을 수 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
continue를 사용하는 이유
0
78
2
정렬 가능 여부 판단하기
0
64
2
알고리즘 학습법 관련해서 질문드립니다.
0
85
1
코드 리뷰 부탁드립니다!
0
90
1
indexOf를 사용해서 풀어보았습니다 !!
0
68
1
저는 이런식으로 구현 해보았습니다 !!
0
64
1
12,13,14 강의 소리만 나오고 검은 화면입니다
0
99
3
반복문 최소화하고 indexOf 사용해서 풀어봤습니다
0
63
1
영상 보기 전에 직접 풀어봤습니다.
0
74
1
섹션1의 17번문제 이 풀이로 풀어도 될까요?
0
133
2
정규표현식으로 처리해도 상관없나요 ?
0
120
2
3칸씩 건너뛸 수 있을 경우
0
125
2
강의에 대해 질문있습니다.
0
135
2
이렇게 해도 되나요?
0
102
2
선생님 중복 단어나 중복관련 문제들은 set을 이용하면 좋을것 같습니다.
0
145
2
이렇게 풀어도 괜찮을까요?
0
138
1
이렇게 풀어도 괜찮을까요?
0
112
1
모든 아나그램 찾기에서 시간복잡도
0
98
1
코드리뷰 부탁드립니다.
0
130
1
for loop 탈출은 return 문으로 해도 되지 않나요?
0
133
1
투포인트알고리즘으로 풀어봤습니다.
0
141
0
코드 리뷰 부탁드립니다.
0
119
1
코드 맞게 작성한 거 아닌가여??
0
146
1
문드윽뀨
0
98
1

