https://school.programmers.co.kr/learn/courses/30/lessons/120853
[ 문제 설명 ]
숫자와 "Z"가 공백으로 구분되어 담긴 문자열이 주어집니다. 문자열에 있는 숫자를 차례대로 더하려고 합니다. 이 때 "Z"가 나오면 바로 전에 더했던 숫자를 뺀다는 뜻입니다. 숫자와 "Z"로 이루어진 문자열 s가 주어질 때, 머쓱이가 구한 값을 return 하도록 solution 함수를 완성해보세요.
[ 문제 풀이 ]
첫번째 풀이
function solution(s) {
//idx배열
let idxArray = [];
// 문자열 배열로 만들기
let sArray = s.split(" ");
// 숫자만 포함한 배열로 만들기
let sNumberArray = sArray.filter((item) => !isNaN(parseInt(item)) && !"");
// 숫자와 z만 포함한 배열로 만들기
let sNumberStringArray = sArray.filter((item) => item !== " ");
// z index값 찾기
let idx = sNumberStringArray.indexOf("Z");
while (idx != -1) {
idxArray.push(idx);
idx = sNumberStringArray.indexOf("Z", idx + 1);
}
// z문자 전 숫자열 합산
let zBeforeArray = idxArray.map((el) => sNumberStringArray[el - 1]);
let sumZBefore = zBeforeArray.reduce((acc, cur) => Number(acc) + Number(cur),0);
//숫자 합산
let sumNumber = sNumberArray.reduce((acc, cur) => Number(acc) + Number(cur),0);
return sumNumber - sumZBefore;
}
1. sNumberArray : filter로 sArray의 배열에서 숫자가 아닌 항목을 필터링
isNaN(value) 함수는 인자로 전달된 값(value)이 숫자인지 여부를 판단
parseInt(string, radix) 함수는 문자열(string)을 정수로 변환
2. sNumberStringArray : 숫자 + Z 포함 배열, 원소가 ""가 아니면 true
3. idx : sNumberStringArray에서 Z 문자 인덱스 찾기
4. let idxArray=[]: indexOf() 함수를 통해 이후 등장하는 Z문자를 찾기 위해서 idx+1로 갱신. whilie 루프를 통해 Z 문자의 모든 인덱스 저장
5. zBeforeArray : idxArray에 저장된 Z문자의 앞 숫자 추출해서 저장
6. sumNumber : 전체 숫자 배열 합산
7. sumZBefore : zBeforeArray 배열 숫자 합산
8. 전체 숫자 합산에서 Z문자 앞에 있는 숫자를 빼기
두번째 풀이
function solution(s) {
let result = 0; // 결과를 저장할 변수 초기화
let prevNum = 0; // 이전 숫자를 저장할 변수 초기화
for (let i = 0; i < s.length; i++) {
const char = s[i];
if (!isNaN(char)) { // 문자가 숫자인 경우 (JavaScript에서는 isNaN 함수를 사용하여 숫자 여부를 판별)
prevNum = prevNum * 10 + Number(char); // 현재 문자를 숫자로 변환하여 이전 숫자에 추가
} else if (char === 'Z') { // 문자가 "Z"인 경우
result -= prevNum; // 이전 숫자를 결과에서 빼기
prevNum = 0; // 이전 숫자를 초기화
} else { // 공백인 경우 (숫자와 "Z"를 구분하는 기준)
result += prevNum; // 이전 숫자를 결과에 더하기
prevNum = 0; // 이전 숫자를 초기화
}
}
result += prevNum; // 마지막 숫자를 결과에 더하기 (문자열이 끝난 경우)
return result;
}
'프론트엔드로 가는 길 > 프로그래머스' 카테고리의 다른 글
51. 문자열 내 p와 y의 개수 (0) | 2023.04.29 |
---|---|
49. 소인수분해 (0) | 2023.04.26 |
47. 캐릭터의 좌표 (0) | 2023.04.24 |
46. 로그인 성공 (1) | 2023.04.21 |
45. 특이한 정렬 (1) | 2023.04.20 |