영어가 싫어요
영어가 싫은 머쓱이는 영어로 표기되어있는 숫자를 수로 바꾸려고 합니다. 문자열 numbers가 매개변수로 주어질 때, numbers를 정수로 바꿔 return 하도록 solution 함수를 완성해 주세요.
- numbers는 소문자로만 구성되어 있습니다.
- numbers는 "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" 들이 공백 없이 조합되어 있습니다.
- 1 ≤ numbers의 길이 ≤ 50
- "zero"는 numbers의 맨 앞에 올 수 없습니다.
const numberStrings = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"];
function solution(numbers) {
let answer = '';
for(let i = 0; i < numbers.length; ) {
const compareString = numbers[i] + numbers[i+1];
for(let j = 0; j < numberStrings.length; j++) {
const numberString = numberStrings[j];
const compareNumberString = numberString[0] + numberString[1];
if(compareString === compareNumberString) {
answer += String(j);
i += numberString.length;
break;
}
}
}
return Number(answer);
}
// 다른 사람의 풀이
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
};
const num = numbers.replace(/zero|one|two|three|four|five|six|seven|eight|nine/g, (v) => {
return obj[v];
});
return Number(num);
}
function solution(numbers) {
const number = ["zero","one","two","three", "four", "five", "six", "seven", "eight", "nine"]
for(let i = 0 ; i<number.length; i++){
numbers = numbers.split(number[i]).join(i)
}
return +numbers
}
function solution(numbers) {
let numStr = [ "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" ];
numStr.forEach((str, idx) => {
numbers = numbers.replaceAll(str, idx);
});
return Number(numbers);
}
<다른 사람의 풀이에 대한 이해>
객체의 활용
정규식
replace()
splite()
replaceAll()
인덱스 바꾸기
문자열 my_string과 정수 num1, num2가 매개변수로 주어질 때, my_string에서 인덱스 num1과 인덱스 num2에 해당하는 문자를 바꾼 문자열을 return 하도록 solution 함수를 완성해보세요.
- 1 < my_string의 길이 < 100
- 0 ≤ num1, num2 < my_string의 길이
- my_string은 소문자로 이루어져 있습니다.
- num1 ≠ num2
function solution(my_string, num1, num2) {
let answer = '';
for(let i = 0; i < my_string.length; i++) {
if(i === num1) {
answer += my_string[num2];
} else if(i === num2) {
answer += my_string[num1];
} else {
answer += my_string[i];
}
}
return answer;
}
// 다른 사람의 풀이
function solution(my_string, num1, num2) {
my_string = my_string.split('');
[my_string[num1], my_string[num2]] = [my_string[num2], my_string[num1]];
return my_string.join('');
}
<다른 사람의 풀이>
2차 배열 활용
한 번만 등장한 문자
문자열 s가 매개변수로 주어집니다. s에서 한 번만 등장하는 문자를 사전 순으로 정렬한 문자열을 return 하도록 solution 함수를 완성해보세요. 한 번만 등장하는 문자가 없을 경우 빈 문자열을 return 합니다.
- 0 < s의 길이 < 1,000
- s는 소문자로만 이루어져 있습니다.
const obj = {};
function solution(s) {
let answer = [];
for(let i = 0; i < s.length; i++) {
const item = s[i];
obj[item] ? obj[item] += 1 : obj[item] = 1;
}
const objArray = Object.entries(obj);
for(let i = 0; i < objArray.length; i++) {
const item = objArray[i];
if(item[1] === 1) answer.push(item[0]);
}
const sortedArray = answer.sort((a,b) => a.charCodeAt(0) - b.charCodeAt(0));
let result = '';
for(let i = 0; i < sortedArray.length; i++) {
result += sortedArray[i];
}
return result;
}
// 다른 사람의 풀이
function solution(s) {
let res = [];
for (let c of s) if (s.indexOf(c) === s.lastIndexOf(c)) res.push(c);
return res.sort().join('');
}
<다른 사람의 풀이에 대한 이해>
for .. of 반복문
indexOf()
lastIndexOf
sort()
join()
약수 구하기
정수 n이 매개변수로 주어질 때, n의 약수를 오름차순으로 담은 배열을 return하도록 solution 함수를 완성해주세요.
- 1 ≤ n ≤ 10,000
function solution(n) {
let answer = [];
for(let i = 1; i <= n; i++) if(n % i ===0) answer.push(i);
return answer;
}
// 다른 사람의 풀이
function solution(n) {
return Array(n).fill(0).map((v, index) => v + index + 1).filter((v) -> n % v === 0);
}
<다른 사람의 풀이에 대한 이해>
Array()
filter()
map()
참고 영상
'코딩테스트 > 프로그래머스 0단계 - 입문' 카테고리의 다른 글
프로그래머스 0단계 - Day17 문자열, 수학, 조건문, 배열, 사칙연산 (0) | 2024.03.22 |
---|---|
프로그래머스 0단계 - Day16 문자열, 수학, 배열, 조건문 (0) | 2024.03.21 |
프로그래머스 0단계 - Day14 조건문, 반복문, 시뮬레이션, 문자열 (0) | 2024.03.20 |
프로그래머스 0단계 - Day13 문자열, 배열, 사칙연산, 수학, 조건문 (0) | 2024.03.20 |
프로그래머스 0단계 - Day12 문자열, 정렬, 사칙연산, 수학 (0) | 2024.03.19 |
댓글