개발 이모저모/프로그래머스 알고리즘
[Algorithm] 프로그래머스 레벨[0] 풀이 - (Javascript)(13)
creativeDeveloper!
2023. 5. 8. 10:37
728x90
■ 영어가 싫어요
function solution(numbers) {
const obj = {
"zero":0,
"one":1,
"two":2,
"three":3,
"four":4,
"five":5,
"six":6,
"seven":7,
"eight":8,
"nine" :9,
};
let answer = "";
let currentNumber="";
for(let i=0; i<=numbers.length; i++){
const char = numbers[i];
if(/\d/.test(char)){
answer += char;
} else {
currentNumber += char;
if(obj[currentNumber] !== undefined){
answer += obj[currentNumber];
currentNumber = "";
}
}
}
return parseInt(answer);
}
- 이 문제는 영어 문자열을 숫자로 변환한 값을 구하는 문제이다.
- 먼저, 문자열과 숫자를 key와 value로 매핑해준다.
- answer를 빈문자열로 초기화하고,
- currentNumber라는 변수에는 현재 읽고 있는 영어 단어를 저장할것이다.
- 우선은 똑같이 빈문자열로 초기화한다.
- numbers의 길이만큼 반복문을 돌려서 numbers 문자열을 읽을 것이다.
- 각 문자가 숫자인 경우에는 더한값을 answer에 누적해준다.
- 영어 단어인 경우에는 currentNumber 변수에 해당 문자를 더해가며 현재 읽고 있는 영어단어를 만든다.
- 만약 currentNumber 가 obj객체에 저장된 키와 일치한다면,
- 해당값을 answer에 더하고 currentNumber 를 초기화한다.
- 반복문이 끝나면 answer 문자열을 정수형으로 변환하여 반환한다.
■ 인덱스 바꾸기
function solution(my_string, num1, num2) {
const arr = my_string.split("");
let str1 = arr[num1];
let str2 = arr[num2];
arr.splice(num1,1,str2);
arr.splice(num2,1,str1);
return arr.join("");
}
- 주어진 문자열 my_string을 split 메소드를 이용해서 여러개의 문자열로 나눈값을 arr 변수에 저장한다.
- 매개변수로 주어진 num1 과 num2를 이용해서 arr 문자열의 인덱스값을 구한뒤 str1, str2에 저장한다.
- 이제 splice함수를 이용해서 arr에서 num1 1개를 str2로 교체해준다.
- 마찬가지로 num2도 str1으로 교체해준뒤,
- join함수를 사용해서 return해준다.
■ 한 번만 등장한 문자
- 한번만 등장하는 문자를 저장하기 위해 onetime이라는 변수로 빈문자열로 초기화한다.
- 반복문을 사용해서 임의의 문자열을 변수 char에 저장한다.
- count를 0으로 초기화하고,
- j에대한 반복문에서 if문을 사용해 char와 s[j]가 같다면 count가 증가한다.
- 그리고 count와 1이 같다면 onetime의 값이 누적된다.
- 마지막으로 answer의 값은 onetime을 split을 사용해 나눠주고 sort함수를 사용해 정렬하고
- join 함수를 사용해 다시 합쳐준다.
■ 약수 구하기
- 이 문제는 정수인 매개변수 n의 약수를 배열 형태로 구하는 문제이다.
- 먼저 i가 1일때부터 n과 같아질때까지 반복문을 돌려준다.
- 약수의 조건은 n을 i로 나누었을때 0이 되어야한다. => n % i === 0
- 조건에 해당하는 수는 push를 사용해 배열로 담아준다.
728x90