프로그래머스 Level 1 문자열 나누기 Javascript 문제 풀이 입니다.
링크 : https://school.programmers.co.kr/learn/courses/30/lessons/140108
✅ Javascript 답안 입니다 더보기 클릭!
function solution(s) {
let answer = 0;
const arr = [...s];
let x = arr[0];
let equal_cnt = 0;
let diff_cnt = 0;
let sliced_index = 0;
for(let i=0; i < arr.length; i++){
if(x == arr[i]){
equal_cnt++;
} else {
diff_cnt++;
}
if(equal_cnt == diff_cnt){
answer++;
sliced_index = i+1;
equal_cnt = 0;
diff_cnt = 0;
x = arr[i+1];
}
}
if(sliced_index == arr.length) {
return answer;
} else {
return ++answer;
}
}
📌 해설
빡구현으로 해결하였습니다.
문제에서 제시한 복잡한 문자열 나누기 과정을 잘 읽고 반복문과 조건문만 잘 걸어준다면 어렵지 않게 통과할 수 있었습니다.
다른 사람의 풀이를 봤는데 재귀로 푼 해결법이 눈에 띄었습니다. 참고해 보아도 좋을 듯 합니다.
let answer = 0;
const arr = [...s];
let x = arr[0];
let equal_cnt = 0;
let diff_cnt = 0;
let sliced_index = 0;
1. 변수 선언입니다.
반복문을 돌리기 위해서 입력된 문자열 s 를 배열로 만들어 주었습니다.
가장 먼저 읽는 문자 x를 arr[0] 으로 선언합니다.
cnt 를 세기 위해서 equal_cnt, diff_cnt 를 각각 0 으로 선언합니다.
sliced_index 를 0 으로 선언하고 이 변수에 arr 을 자른 인덱스를 넣어줄 것입니다.
for(let i=0; i < arr.length; i++){
if(x == arr[i]){
equal_cnt++;
} else {
diff_cnt++;
}
if(equal_cnt == diff_cnt){
answer++;
sliced_index = i+1;
equal_cnt = 0;
diff_cnt = 0;
x = arr[i+1];
}
}
2. for 문입니다. i 를 ++ 시키면서 arr 을 순회하는 반복문으로 만들었습니다.
아까 선언했던 첫 문자 x 가 arr 의 문자와 같은지 다른지 체크합니다. 같으면 equal_cnt 를 ++, 다르면 diff_cnt 를 ++ 합니다.
그리고 equal_cnt 와 diff_cnt 가 같은지 체크합니다. 같지 않으면 i++ 하여 다시 체크합니다.
만약 equal_cnt 와 diff_cnt가 같다면,
2-1. answer을 ++ 해줍니다.
2-2. sliced 에 arr 을 이전에 잘랐던 인덱스(sliced_index) 부터 현재 자를 인덱스(i+1) 까지 잘라 push 합니다.
2-3. equal_cnt 를 0으로, diff_cnt 를 0으로 초기화 해줍니다.
2-4. 이 다음 비교를 위해 x 에 현재 자른 인덱스의 문자를 넣어 줍니다.
if(sliced_index == arr.length) {
return answer;
} else {
return ++answer;
}
3. for문이 종료되고 마지막으로 자른 인덱스(sliced_index) 와 arr 의 길이를 비교합니다.
같으면 answer 을 반환합니다.
다르면 마지막으로 자른 인덱스 뒤에 한 벌 남은 문자들이 존재하므로 ++ answer 을 해주어 반환합니다.
::
급하게 javascript 로 코테를 볼 기회가 생겨서 문자열 다루는 방법 연습 삼아 풀어보았습니다!
'✅ 문제풀이' 카테고리의 다른 글
프로그래머스 상품 별 오프라인 매출 구하기 MySQL (0) | 2023.10.15 |
---|---|
프로그래머스 조건에 맞는 도서와 저자 리스트 출력하기 MySQL (0) | 2023.10.15 |
프로그래머스 - 대충 만든 자판 파이썬 python (0) | 2023.10.09 |
프로그래머스 - 공원산책 파이썬 python (0) | 2023.10.03 |
[그리디 알고리즘] 이코테 - 1이 될 때까지 (0) | 2021.12.01 |