Notice
Recent Posts
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- JS 함수
- JS appendChild
- JS 연산
- git 협업셋팅
- JS 타이머기능
- JS prompt
- JS typeof연산자
- JS 화살표함수
- JS 데이터타입
- JS setInterval
- JS form
- JS 형변환
- JS null undefined
- HTML기초
- JS 기초
- JS form action
- JS preventDefault
- JS 스코프
- JS classList
- JS 삼항연산
- JS localStorage
- CSS속성정리
- JS setTimeout
- JS clearInterval
- JS value속성
- JS redirection
- JS append
- JS 숫자
- js 변수
- CSS기초
Archives
공부기록용
JavaScript 문법 종합(연습06) 본문
Q.1 정수 n이 매개변수로 주어질 때 n의 각 자리 숫자의 합을 return하도록 solution 함수를 완성해주세요
제한사항
- 0 ≤ n ≤ 1,000,000
//(풀이 1) for of 활용
// 1. 정수 n이 숫자형이므로 .split을 사용하려면 문자로 형변환> n+문자('') (또는 String(n))
// 2. .split('') 메소드 사용하여 한글자씩 분리 ['1', '2', '3', '4']
// 3. for of 활용
// 3-1. answer = answer + i * 1 i*1 다시 숫자로 형변환 (또는 pasrseInt(i))
// 4. return answer
function solution(n) {
var answer = 0;
var m = String(n);
// n = (n + '').split('');
for (i of m) answer += i * 1;
return answer;
}
console.log(solution(1234))
//(풀이 2) .split() + .reduce() 활용
// 1. 정수 n이 숫자형이므로 .split을 사용하려면 문자로 형변환> n+문자('') (또는 String(n))
// 2. .split('') 메소드 사용하여 한글자씩 분리
// 3. .reduce() 메소드 사용
// 3-1. .reduce(누적값, 현재값 => 결과, 초깃값); (누산기라고 이해하면 쉬울듯)
// cf. reduce() 함수의 두번째 파라미터 cur에 초기값 0으로 잡고
// 첫번째 파라미터 acc에는 누적값, 두번째 파라미터 cur에 현재값 1, 2, 3을 숫자형으로 바꿔서(parseInt(cur)나 cur*1) 누적값에 더해준다.
// 4. 모든 자릿수 더한 값 return
function solution(n) {
return (n + '').split('').reduce((acc , cur) => acc + cur * 1, 0);
}
// 1. for (let i = 0; i <= 6; i++) 선언 [매개변수 최대값이 1,000,000이므로 i<=6]
// 2. 매개변수 n이 10의 i제곱보다 작을때 , n의 자릿수 cnt는 i이다.
// 2-1 . Math.pow(n,i) n의 i제곱의 수를 구하는 메서드
// 3. 자릿수를 구하고 반복문을 break; 한다.
// 4. n의 자릿수만큼 반복하는 for (let i = 0; i < cnt; i++) 반복문을 만들고
// 4-1. n에서 10을 나눈것의 나머지를 ans에 더하는 식으로 각 1,10,100,...자리의 숫자를 더해준다.
// 4-2. n을 10으로 나눈것의 몫을 n에 대입한다.
// 4-3 자릿수만큼 반복한다.
// 5. ans를 반환한다.
function solution(n) {
let ans = 0;
let cnt = 0;
for (let i = 0; i <= 6; i++) {
if(Math.pow(10,i)>n){
cnt=i;
break;
}
}
for (let i = 0; i < cnt; i++) {
ans += n%10;
n = Math.floor(n/10);
}
return ans;
}
Q2. 순서쌍이란 두 개의 숫자를 순서를 정하여 짝지어 나타낸 쌍으로 (a, b)로 표기합니다. 자연수 n이 매개변수로 주어질 때 두 숫자의 곱이 n인 자연수 순서쌍의 개수를 return하도록 solution 함수를 완성해주세요.
제한사항
- 1 ≤ n ≤ 1,000,000
function solution(n) {
const answer = [];
for ( let i = 1; i <= n; i++ ) {
if ( n % i === 0 ) {
answer.push(i);
}
}
return answer.length;
}
//console.log(solution(20));
Q3. 개미 군단이 사냥을 나가려고 합니다. 개미군단은 사냥감의 체력에 딱 맞는 병력을 데리고 나가려고 합니다. 장군개미는 5의 공격력을, 병정개미는 3의 공격력을 일개미는 1의 공격력을 가지고 있습니다. 예를 들어 체력 23의 여치를 사냥하려고 할 때, 일개미 23마리를 데리고 가도 되지만, 장군개미 네 마리와 병정개미 한 마리를 데리고 간다면 더 적은 병력으로 사냥할 수 있습니다. 사냥감의 체력 hp가 매개변수로 주어질 때, 사냥감의 체력에 딱 맞게 최소한의 병력을 구성하려면 몇 마리의 개미가 필요한지를 return하도록 solution 함수를 완성해주세요.
제한사항
- hp는 자연수입니다.
- 0 ≤ hp ≤ 1000
// * 1~3번 Math.floor 메소드 사용
// 1. 장군개미 병력 = hp를 일단 가장 공격력이 큰 장군개미(ant5)의 공력력 5로 나눔
// 2. 병정개미 병력 = 전체 hp에서 장군개미(ant5) 전체공격력빼고 병정개미(ant3) 공격력인 3으로 나눔
// 3. 일 개미 병력 = 일개미는 공격력 1이니까 전체 hp에서 -장군개미 공력력 -병정개미 공력력 뺀거 == 일개미 병력 수
// 4. 1 + 2 + 3 합 return
function solution(hp) {
var answer = 0;
let ant5 = Math.floor(hp/5);
let ant3 = Math.floor((hp-ant5*5)/3);
let ant1 = hp-ant5*5-ant3*3
answer = ant5-ant3-ant1
return answer;
}
// 1. 각 5 3 1 로 나눈것의 몫을 받을 ans 변수 선언
// 2. 1을 제외한 5,3을 담은 army 배열 선언
// 3. army.forEach를 통해 각 요소로 hp를 나눈것의 몫을 ans에 더해주고
// 3-1. 그후 해당 요소로 hp를 나눗셈 해준다.
// 4. ans에 남은 hp를 더해 반환한다.
// (1로 나누어봤자 의미 없으니 1로 나누는 과정을 생략한 것)
function solution(hp) {
let ans=0;
const army = [5,3];
army.forEach((a)=>{
ans+=Math.floor(hp/a);
hp%=a;});
return ans+=hp;
}
Q4. 문자열 my_string이 매개변수로 주어집니다. my_string안의 모든 자연수들의 합을 return하도록 solution 함수를 완성해주세요.
제한사항
- 1 ≤ my_string의 길이 ≤ 1,000
- my_string은 소문자, 대문자 그리고 한자리 자연수로만 구성되어있습니다.
function solution(my_string) {
// 1. answer 변수 선언
var answer = 0;
// 2. str 변수 선언
// 2-1. .split() 메소드로 my_stirng 한글자씩 분리
var str = my_string.split("");
// 3. for of문 활용
// 3.1 if문 활용 str안의 숫자형 i = true 라면 answer 쏙쏙..더해주세요..
for (let i = 0; i < str.length; i++) {
if (Number(str[i])) answer += Number(str[i]);
}
// 4. return answer..
return answer;
}
// (풀이 1. for of - if 활용)
// 1. answer 변수 선언
// 2. str 변수 선언
// 2-1. .split() 메소드로 my_stirng 한글자씩 분리
// 3. for of문 활용
// 3.1 if문 활용 str안의 숫자형 i = true 라면 answer 쏙쏙..더해주세요..
// 4. return answer..
function solution(my_string) {
let answer = 0;
let str = my_string.split("");
for (let i of str) {
if (Number(i)) answer += Number(i);
}
return answer;
}
function solution(my_string) {
let ans = 0;
let str = my_string.split("");
for (var i of str) {
if (Number(i) === true) ans += Number(i);
}
return ans;
}
// 1. 숫자들을 더해줄 ans변수선언
// 2. my_string의 length만큼 반복할 for문을 선언
// 2-1 isNaN메서드를 통해 각요소를 조회하며 , 숫자에 해당하는 요소만 parseInt를 거쳐 ans에 더해준다.
// 3. ans 반환
function solution(my_string) {
// 1. 숫자들을 더해줄 ans변수선언
var ans = 0;
// 2. my_string의 length만큼 반복할 for문을 선언
// 2-1 isNaN메서드를 통해 각요소를 조회하며 , 숫자에 해당하는 요소만 parseInt를 거쳐 ans에 더해준다.
for (let i = 0; i < my_string.length; i++) {
// isNaN(값) -> 값이 숫자가 아니면!! 아니면 ,true를 반환 숫자면 false를 반환
if (isNaN(my_string[i])) {
} else {
ans += parseInt(my_string[i])
}
}
// 3. ans 반환
return ans;
}
function solution(my_string) {
let ans=0;
for (let i = 0; i < my_string.length; i++) {
if (!isNaN(my_string[i])) ans += parseInt(my_string[i]);
}
return ans;
}
// best solution
function solution(my_string) {
return [...my_string].reduce((acc,cur)=>Number(cur) ? +acc + +cur : acc, 0)
}
Q5. 문자열 my_string이 매개변수로 주어질 때, my_string 안에 있는 숫자만 골라 오름차순 정렬한 리스트를 return 하도록 solution 함수를 작성해보세요.
제한사항
- 1 ≤ my_string의 길이 ≤ 100
- my_string에는 숫자가 한 개 이상 포함되어 있습니다.
- my_string은 영어 소문자 또는 0부터 9까지의 숫자로 이루어져 있습니다.
function solution(my_string) {
let str = my_string.split('');
let answer = [];
for (i=0; i < str.length; i++) {
if(!isNaN(str[i])) answer.push(Number(str[i]))
}
return answer.sort((a,b) => a - b);
}
// 1.my_string을 분리한것에
// 1-1 filter를 돌려서 숫자에 해당하는 녀석들만 뽑아내서 배열을 만든후
// 1-2 오름차순 정렬해서 리턴한다.
function solution(my_string) {
return my_string.split("").filter(도원 => !isNaN(도원)).map(Number).sort((a, b) => (a - b));
}
'✍️문제풀기✍️ > JS_Programmers school' 카테고리의 다른 글
프로그래머스(LV 1. 짝수와 홀수) (0) | 2023.06.16 |
---|---|
프로그래머스(LV 0. 배열 조각하기) (0) | 2023.06.15 |
JavaScript 문법 종합(연습05) (2) | 2023.05.30 |
JavaScript 문법 종합(연습04) (1) | 2023.05.29 |
JavaScript 문법 종합(연습03) (0) | 2023.05.26 |
Comments