저주의 숫자 3
※풀이
1. 초기값으로 answer를 0으로 설정하고, 숫자들을 저장할 빈 배열 arr을 생성합니다.
2. 반복문을 사용하여 0부터 n까지의 수를 반복합니다.
· answer를 1씩 증가시킵니다.
· while 루프를 사용하여 answer가 3의 배수이거나 숫자 내에 3이 포함되어 있는 경우, answer를 1씩 증가시킵니다.
· answer % 3 == 0: answer가 3의 배수인지 확인합니다.
· answer.toString().split('').includes('3'): answer를 문자열로 변환한 후, split() 함수를 사용하여 각 자릿수로 분리한 배열에 '3'이 포함되어 있는지 확인합니다.
· 위의 두 조건 중 하나라도 참일 경우, while 루프를 계속 반복하며 answer를 증가시킵니다.
3. 결과값 answer를 반환합니다.
ex1)
{
function solution(n) {
let answer = 0;
let arr = []
for (let i = 0; i < n; i++){
answer += 1;
while (answer % 3 == 0 || answer.toString().split('').includes('3')){
answer += 1;
}
}
return answer;
}
console.log(solution(15));
//25
}
ex2)
{
function solution(n) {
let answer = 0;
let arr = []
for (let i = 0; i < n; i++){
answer += 1;
while (answer % 3 == 0 || answer.toString().split('').includes('3')){
answer += 1;
}
}
return answer;
}
console.log(solution(40));
//76
}
다항식 더하기
※풀이
1. polynomial을 "+"를 기준으로 분리하여 배열 arr에 저장합니다.
· polynomial.split(' + '): "+"를 기준으로 다항식을 분리합니다.
2. arr에서 "x"를 포함하는 항들을 필터링하고, "x"를 제거하고 숫자로 변환한 뒤 배열에 저장합니다. 만약 "x"만 존재한다면 1로 간주합니다.
· arr.filter(v => v.includes('x')): "x"를 포함하는 항들을 필터링합니다.
· v.replace('x', ''): "x"를 제거합니다.
· parseInt(v.replace('x', '')) || 1: "x"를 제거한 결과를 정수로 변환합니다. 만약 결과가 NaN이라면 1로 설정합니다.
3. arr에서 "x"를 포함하지 않는 항들을 필터링하고, 정수로 변환한 뒤 합을 구합니다.
· arr.filter(v => !v.includes('x')): "x"를 포함하지 않는 항들을 필터링합니다.
· parseInt(c): 항을 정수로 변환합니다.
· reduce((a, c) => a + parseInt(c), 0): 합을 구합니다.
4. 결과를 반환하기 위해 빈 배열 answer를 생성합니다.
5. x 값이 존재하면 처리합니다.
· if (x): x가 0이 아니면 실행됩니다.
· if (x === 1): x가 1인 경우, 'x'를 answer 배열에 추가합니다.
· else: 그 외의 경우, ${x}x 형태의 문자열을 answer 배열에 추가합니다.
6. nomal 값이 존재하면 처리합니다.
· if (nomal): nomal이 0이 아니면 실행됩니다.
· answer.push(nomal): nomal을 answer 배열에 추가합니다.
7. answer 배열을 문자열로 변환하여 반환합니다. 항들은 " + "로 구분됩니다.
· return answer.join(' + ');
ex1)
{
function solution(polynomial) {
const arr = polynomial.split(' + ')
const x = arr.filter(v => v.includes('x')).map(v => parseInt(v.replace('x', '')) || 1).reduce((a, c) => a + c, 0)
const nomal = arr.filter(v => !v.includes('x')).reduce((a, c) => a + parseInt(c), 0)
const answer = [];
if(x){
if (x === 1){
answer.push('x')
} else {
answer.push(`${x}x`)
}
}
if (nomal){
answer.push(nomal)
}
return answer.join(' + ');
}
console.log(solution("3x + 7 + x"));
//"4x + 7"
}
ex2)
{
function solution(polynomial) {
const arr = polynomial.split(' + ')
const x = arr.filter(v => v.includes('x')).map(v => parseInt(v.replace('x', '')) || 1).reduce((a, c) => a + c, 0)
const nomal = arr.filter(v => !v.includes('x')).reduce((a, c) => a + parseInt(c), 0)
const answer = [];
if(x){
if (x === 1){
answer.push('x')
} else {
answer.push(`${x}x`)
}
}
if (nomal){
answer.push(nomal)
}
return answer.join(' + ');
}
console.log(solution("x + x + x"));
//"3x"
}