반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- nodejs
- 드림코딩
- 위코드
- wecode
- github
- 독서 리뷰
- 월별 운동일지
- 박스점프
- 메디패치
- 크로스핏
- node
- Til
- 홈트
- 습윤밴드
- code kata
- dql
- 활동 킬로칼로리
- 운동일지
- 걷기
- JavaScript
- MySQL
- 러닝
- axios
- 달리기
- Udemy
- express
- node.js
- SQL
- git
- dml
Archives
- Today
- Total
RISK IT
[code kata] week 1 - day 3 본문
반응형
문제
String 형인 str 인자에서 중복되지 않은 알파벳으로 이루어진 제일 긴 단어의 길이를 반환해주세요.
str: 텍스트
return: 중복되지 않은 알파벳 길이 (숫자 반환)
예를 들어,
str = "abcabcabc"
return 은 3
=> 'abc' 가 제일 길기 때문
str = "aaaaa"
return 은 1
=> 'a' 가 제일 길기 때문
str = "sttrg"
return 은 3
=> 'trg' 가 제일 길기 때문
모범 풀이
const getLengthOfStr = (str) => {
let topLength = 0;
let arr = [];
for (i = 0; i < str.length; i++) {
if (arr.indexOf(str[i]) == -1) {
arr.push(str[i]);
} else {
arr = arr.slice(arr.indexOf(str[i]) + 1);
arr.push(str[i]);
}
if (topLength < arr.length) {
topLength = arr.length;
}
}
return topLength;
};
이 코드의 핵심은 str의 길이만큼 for문을 돌려서 중복되지 않은 알파벳은 추가하고 중복되는 알파벳은 이미 추가된 것을 먼저 지우고 나중 것을 추가하는 아이디어를 낼 수 있는가이다.
이번 문제에서는 문제를 제대로 푸는 것도 중요하지만 그 전에 문제를 제대로 이해하는 것이 우선시 되어야 한다는 점을 다시 한 번 상기시켜주었다.
실패한 나의 풀이
const getLengthOfStr = (str) => {
const arr = str.split('');
let star = [];
for (i = 1; i <= arr.length; i++) {
star.push(0);
}
for (let i = 0; i < arr.length - 1; i++) {
if (arr[i] === arr[i + 1]) {
star[i + 1] = 1;
}
}
const a = star.join('');
const b = a.split('1');
const c = [];
for (let i = 0; i < b.length; i++) {
c.push(b[i].length);
}
const d = c.sort();
const e = d[d.length - 1];
return e;
};
내 풀이의 문제점
- 변수를 선언할 때 이름을 쉽게 지어줘야 하는데, 변수를 너무 많이 생성하다 보니까 변수 이름 적절하게 짓는것도 쉽지 않아서 a, b, c, d, e 이런 식으로 변수를 지었다. 물론 조금이라도 더 의미 있게 지으려면 지을 수는 있지만 우선은 날 것 그대로의 코드를 가지고 왔다.
- 문제를 제대로 이해하지 못해서 abcabcabc와 같은 인풋에 대한 결과값이 출력되지 않았다. 힘들게 작성했지만, 문제를 제대로 이해하지 못한 내 탓이다.
.indexOf
메소드를 안쓰고 해보려고 했지만, 실패했다. 좋은 메소드가 있으면 적극 활용할 줄도 알아야 한다.- 기본적으로 문제도 해결하지 못하는 풀이기 때문에 갈 길이 먼 풀이다.
중복되지 않은 알파벳이라는 표현이 모호해서 문제 풀이 방향을 잘못 잡았던 점은 좀 아쉬웠다. 내가 이해력이 부족한 탓이지만..!
반응형
'IT > Algorithm & CodeKata' 카테고리의 다른 글
[code kata] week 1 - day 5 (0) | 2023.01.24 |
---|---|
[code kata] week 1 - day 4 (0) | 2023.01.24 |
[code kata] week 1 - day 2 (0) | 2023.01.17 |
[code kata] week1 - day1 (0) | 2023.01.17 |