문제를 보고 어떤 원리로 문자열을 나누는지부터 판단해야 했다.
나누는 기준으로는
문자열의 첫 번 째 단어를 기준으로
같으면 같은 단어의 개수를 증가,
틀리면 틀린 단어의 개수를 증가
시키는 방식이었다.
그런데, 기준이 되는 첫 번 째 단어를
같은 문자가 1개 있다고 시작해
같은 단어의 개수를 1로 시작해줘야 했다.
그렇게 세팅을 하고 오른쪽으로 이동하면서
같은 단어의 개수와 다른 단어의 개수가
같아지면 마지막으로 같아진 단어까지
포함해서 문자열을 잘라
2개의 문자열을 만드는 방식이었다.
그리고 아직 판단에 참여하지 않은
문자열에서 위와 같은 과정을
반복 진행하는 방식이었다.
제출한 코드 :
function solution(s) {
const answer = []
// 결과를 담을 변수
s = [...s]
// 문자열 조작과 반복을
// 편하게 하기 위해 단어 배열로 변경
let start = s[0]
// 문자열의 시작 단어를 변수에 담는다
let index = 1, same = 1, diff = 0;
// index 시작 단어와 비교될 배열의 주소
// same 시작 단어와 같은 단어
// diff 시작 단어와 다른 단어
while(s.length)
{
// 단어 배열의 길이가
// 0이 되면 반복문 종료
if(same === diff)
{
// 둘의 개수가 같아지면
answer.push(s.splice(0,index).join(''))
// s.splice(0, index)로
// 여태까지 개수 확인에 참여한 배열까지 잘라서
// join('')으로 단어 배열을 문자열로 바꿔주고
// 정답 배열에 담아준다
// + 단어 배열 s는 index + 1 ~ s.length
// 만큼 남긴다.
start = s[0]
// 남은 단어 배열의 첫 번 째 단어 설정
index = 1
same = 1
diff = 0
// 초기 세팅
}
start === s[index++] ? same++ : diff++
// 비교 단어가 같으면 same 증가, 다르면 diff 증가
}
return answer.length
//배열의 요수 개수 반환
}
'문제 풀기 > JavaScripts' 카테고리의 다른 글
문제 6. 둘만의 암호 (난이도 5) (0) | 2024.09.03 |
---|---|
문제 66. 대충 만든 자판 (난이도 7) (0) | 2024.08.30 |
문제 64. 체육복 (난이도 5) (0) | 2024.08.28 |
문제 63. 숫자 짝꿍(난이도 7)(객체 사용 {}) (0) | 2024.08.26 |
62문제. 옹알이(2)(난이도 10) (0) | 2024.08.23 |