문제 설명

문자열 my_string이 매개변수로 주어집니다. my_string안의 모든 자연수들의 합을 return하도록 solution 함수를 완성해주세요.


제한사항

  • 1 ≤ my_string의 길이 ≤ 1,000
  • my_string은 소문자, 대문자 그리고 한자리 자연수로만 구성되어있습니다.

입출력 예

my_string result

"aAb1B2cC34oOp" 10
"1a2b3c4d123" 16

입출력 예 설명

입출력 예 #1

  • "aAb1B2cC34oOp"안의 한자리 자연수는 1, 2, 3, 4 입니다. 따라서 1 + 2 + 3 + 4 = 10 을 return합니다.

입출력 예 #2

  • "1a2b3c4d123Z"안의 한자리 자연수는 1, 2, 3, 4, 1, 2, 3 입니다. 따라서 1 + 2 + 3 + 4 + 1 + 2 + 3 = 16 을 return합니다.

유의사항

  • 연속된 숫자도 각각 한 자리 숫자로 취급합니다.

풀이순서

1. 숫자가 아닌 모든 문자열을 공백으로 대체한다.

2. 숫자만 존재하는 문자열을 각각의 원소를 나누어준다.

3. 문자열인 각각의 숫자를 숫자로 바꾸어 모두 더한다.

 

const solution = (my_string) => {
  return my_string
    .replace(/[a-zA-Z]/g, "") // 숫자가 아닌 모든 문자를 공백으로 대체한다.
    .split("") // 하나의 문자열인 숫자를 각각의 원소로 나눈다.
    .reduce((acc, current) => acc + parseInt(current), 0); // 문자열을 숫자열로 바꾸어 모두 더한다.
};

 

다른 풀이방식 

const solution = (my_string) => {
return (my_string.match(/\\d/g) || []).reduce((sum, digit) => sum + +digit, 0);
};

 

function solution(my_string) {
let sum = 0;
for (let i = 0; i < my_string.length; i++) {
const char = my_string[i];
if (char >= '0' && char <= '9') {
sum += parseInt(char);
}
}
return sum;
}

 

 

위의 풀이방식을 통해 정규표현식에 대하여 이해하였고 reduce() 함수의 사용이 더 익숙해졌습니다.

 

문제 출처 : https://school.programmers.co.kr/learn/courses/30/lessons/120851

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

 

 

728x90

배열에 있는 요소의 값을 변경하여 새로운 배열을 만들 때 사용할 수 있다.

반복문으로 처리가 가능 하지만 간단하게 Array.map() 메소드를 사용할 수 있으며, 이는 콜백 함수를 이용해 각각의 요소를 호출하고 그 값을 변환할 수 있게 만들어준다.

 

즉, 콜백 함수는 배열의 각 요소에 실행된다.

예를 들어,

let arr = [1, 2, 3, 4];

for (let i = 0; i < arr.length; i++){
  arr[i] = arr[i] * 2;
}

console.log(arr); // [2, 4, 6, 8]

와 같은 반복문으로 나타낼 수도 있지만

let arr = [1, 2, 3, 4];

let modifiedArr = arr.map(function(element){
    return element * 2;
});

console.log(modifiedArr); // [2, 4, 6, 8]

처럼 Array.map() 메소드를 사용할 수 있다.

 

이는 객체 배열에서도 적용될 수 있으며

예를 들어,

let users = [
  {firstName : "Kanghyun", lastName: "Kim"},
  {firstName : "Donald", lastName: "Trump"},
  {firstName : "Michel", lastName: "Jordan"}
];

과 같은 배열을 순환처리해서

let users = [
  {firstName : "Kanghyun", lastName: "Kim"},
  {firstName : "Donald", lastName: "Trump"},
  {firstName : "Michel", lastName: "Jordan"}
];

let usersFullName = users.map(function(element){
    return `${element.firstName} ${element.lastName}`;
})

console.log(userFullnames);
// ["Kanghyun Kim", "Donald Trump", "Michel Jordan"]

와 같이 각각의 객체를 결합할 수도 있다.

 

이러한 Map() 메소드는 원본 배열을 변경하지 않으며, 각 요소에 대해 콜백 함수를 실행한다

또한, 결과물로 새로운 배열을 반환한다.

 

참조 : https://www.freecodecamp.org/korean/news/javascript-map-method/

728x90

'Javascript' 카테고리의 다른 글

호출 스케줄링(scheduling a call)  (0) 2025.02.04
연산자, 약식연산자와 값 유형  (2) 2024.12.26
함수(Function)  (0) 2024.12.25
객체 레터럴  (0) 2024.12.24
배열 메소드 응용하기  (1) 2024.12.22

일정 시간이 지난 후에 원하는 함수를 예약하여 호출하는 것을 '호출 스케줄링(scheduling a call)'이라 하며 이는 setTimeout, setInterval과 같이 두 가지로 나뉠 수 있다.

setTimeout

setTimeout은 타이머와 같은 기능을 하고 일정 시간이 지난 후에 함수를 실행시킨다.

예를 들어,

setTimeout (() => {
console.log("setTimeout, 1000ms");
}, 1000);
	
	console.log("Hello World");

 

와 같이 나타낼 수 있으며 이 함수는 "Hello World"를 출력하고 1초 후에 "setTimeout, 1ms"를 출력하게 된다. 여기서 1000은 1000ms(1초)를 뜻한다

setInterval

setInterval은 일정 시간 간격을 두고 함수를 실행시킨다.

예를 들어,

setInterval (() => {
console.log("Tic");
}, 1000);

setInterval (() => {
console.log("Tok");
}, 2000);

와 같이 나타낼 수 있으며, 이 함수는 1초 마다 "Tic"을 출력하고 2초 마다"Tok"를 출력하여 주기적으로 문자를 출력하게 된다.

 

clearTimeout / clearInterval

setTimeout을 호출하면 '타이머 식별자(timer identifier)'가 반환된다. 스케줄링을 취소하고 싶을 때, clearTimeout을 사용할 수 있으며 이는 setInterval에도 동일하게 적용된다.

예를 들어,

let ticTok = setInterval(() => {
console.log("Tictok");
}, 1000);
clearInterval(() => {
ticTok}, 10000);

와 같이 나타낼 수 있으며, 이 함수는 1초 마다  "TicTok"을 10초간 호출하고 더 이상 호출하지 않게 된다.

 

 

출처 : https://ko.javascript.info/settimeout-setinterval

728x90

'Javascript' 카테고리의 다른 글

Map Method(맵 메소드)  (1) 2025.02.05
연산자, 약식연산자와 값 유형  (2) 2024.12.26
함수(Function)  (0) 2024.12.25
객체 레터럴  (0) 2024.12.24
배열 메소드 응용하기  (1) 2024.12.22