일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Fetch
- 캡슐화
- 노마드코더
- github
- 투두앱만들기
- 클래스
- 부트캠프
- Hooks
- 자바스크립트
- 상속
- 리액트
- 패스트캠퍼스
- CSS
- 타입스크립트
- JavaScript
- OOP
- REACT
- 웹개발
- typeScript
- 논리연산자
- 불변성
- 프론트엔드
- 자바스트립트
- webdevelopment
- js
- Zustand
- Props
- frontend
- 추상화
- 객체지향프로그래밍
- Today
- Total
connecting dots
프로그래머스 | 짝수의 합, 배열의 평균값, 짝수와 홀수, 평균 구하기, 자릿수 더하기 본문
1. 짝수의 합
# 문제 설명
정수 n이 주어질 때, n이하의 짝수를 모두 더한 값을 return 하도록 solution 함수를 작성해주세요.
# solution.js
function solution(n) {
let sum = 0;
for (let i = 0; i <= n; i += 2) {
sum += i;
} return sum
}
solution(60)
let sum = 0 | sum이라는 변수 만들어서 더한 값 저장할 수 있게 함 |
for 문 | 0부터 시작, 인수 n보다 작거나 같아야 하는 것이 조건이고 0부터 2씩 더한다는 뜻. |
sum += i | 그 i의 값을 sum에 더해서 |
return sum | solution 함수가 실행되면 sum 값을 반환함 |
2. 배열의 평균값
# 문제 설명
정수 배열 numbers가 매개변수로 주어집니다. numbers의 원소의 평균값을 return하도록 solution 함수를 완성해주세요.
# solution.js
1) reduce
function solution(numbers) {
const sum = numbers.reduce((total, num) => {
return total + num})
const avr = sum / numbers.length
return avr
}
numbers가 배열로 들어오니까 따로 배열 세팅은 안해도 되는 것 | const sum = numbers.reduce((total, num) 합을 먼저 구할거니까 인수 이름 그냥 total, num으로 |
{return total + num)} | total에 num 더한 것을 다시 total로 보내줘서 반복이 끝날 때 까지 진행, 최종 값은 sum에 저장 |
const avr = sum / numbers.length | 결과적으로 평균을 구해야 하니 sum을 number.length로 나눠줌 |
return avr | 평균값 출력 |
2) for
function solution(numbers) {
let sum = 0;
for(let i = 0; i < numbers.length; i++) {
sum += numbers[i];
}
const length = numbers.length
const avr = sum / length
return avr
}
for(let = 0; i < numbers.length; i++) | i는 0부터 시작, 배열은 0부터 시작하니까 i는 배열의 길이보다 작게 i++ 해서 i에 1씩 더해줌 |
sum += numbers.[i] | sum 변수에 numbers의 각 항목을 0부터 배열길이-1 까지 더해줌 |
이하는 평균 구하기, const length에 numbers.length 저장해서 avr 정리 조금 더 깔끔하게 |
주의) return 사용에 대한 for 루프와 reduce 루프 차이
• for 루프 내부에서 return을 사용하면 첫 번째 반복에서 함수가 종료되므로, 루프 외부에서 return을 사용해야 합니다.
• for 루프 내부에서는 합계를 계산하고, 루프 외부에서 평균값을 계산하여 반환합니다.
• reduce 메서드는 콜백 함수 내에서 return을 사용하여 값을 누적할 수 있습니다.
3) forEach()
forEach()가 붙어있는 배열 데이터의 아이템 개수만큼 인수로 사용된 콜백함수가 반복적으로 실행됨
실행될 때 마다 index의 값이 0부터 하나씩 증가함
function solution(numbers) {
let sum = 0;
numbers.forEach(function (num) {
return sum += num
})
const length = numbers.length
const avr = sum / length
return avr
}
numbers.forEach(function (num) { return sum += num}) |
forEach와 콜백함수 이용해서 sum에 num을 더한 값 return |
3. 짝수와 홀수
# 문제 설명
정수 num이 짝수일 경우 "Even"을 반환하고 홀수인 경우 "Odd"를 반환하는 함수, solution을 완성해주세요.
# solution.js
1) if 조건문
function solution(num) {
if (num % 2 === 0) {
return 'Even'
} else {
return 'Odd'
}
}
solution (60)
2) 삼항 연산자
function solution(num) {
const number = num % 2 === 0 ? 'Even' : 'Odd'
return number
}
4. 평균 구하기
# 문제 설명
정수를 담고 있는 배열 arr의 평균값을 return하는 함수, solution을 완성해보세요
# solution.js
function solution(arr) {
let sum = 0;
for (let i = 0; i < arr.length; i++) {
sum += arr[i]
}
const length = arr.length
const avr = sum / length
return avr;
}
5. 자릿수 더하기
# 문제 설명
자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요.
예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다.
# solution.js
function solution(n) {
const number = n;
const numberArray = number.toString().split('').map(Number);
const sum = numberArray.reduce((a, b) => a + b)
return sum
}
solution(99)
N이 123일 때 1+2+3이 되어야 하기 때문에 숫자를 배열로 바꿔서 배열 안의 숫자들을 다 더하는 느낌으로 문제해결을 하고 싶었음 숫자를 배열로 바꾸는 방법 ??? --> number.toString()으로 숫자를 문자열로 바꾼 후 --> .split('')로 문자열을 각 문자로 분리하여 배열로 만듬 문자를 다시 숫자로 만들어야 더할 수 있네 ?? --> .map(Number)로 각 문자를 숫자로 변환 모든 숫자를 더하기 위해 reduce 사용 |
- 숫자를 배열로 변환
number.toString
const number = 12345; // 예시 숫자
const numberArray = number.toString().split('').map(Number);
console.log(numberArray); // [1, 2, 3, 4, 5]
• number.toString() : 숫자를 문자열로 변환합니다.
• .split('') : 문자열을 각 문자로 분리하여 배열로 만듭니다.
"12345"는 ["1", "2", "3", "4", "5"]로 변환됩니다.
• map(Number) : 각 문자를 숫자로 변환합니다.
- 배열의 모든 요소를 합산
numberArray.reduce((a,b) => a + b);
const sum = numberArray.reduce((acc, curr) => acc + curr, 0);
console.log(sum); // 15
# 다른사람의 풀이
function solution(n){
return (n+"").split("").reduce((acc, curr) => acc + parseInt(curr), 0)
}
n + ""
• 숫자 n을 문자열로 변환합니다.
• 예를 들어, n이 12345이면, 이를 "12345"로 변환합니다.
• 숫자와 빈 문자열을 더하면 자동으로 숫자가 문자열로 변환됩니다.
.reduce((acc, curr) => acc + parseInt(curr), 0)
• reduce 메서드는 배열의 각 요소를 누적(accumulate)하여 하나의 값으로 만듭니다.
• 첫 번째 인자는 누적 값 acc (accumulator)입니다.
• 두 번째 인자는 현재 처리 중인 배열 요소 curr (current value)입니다.
• parseInt(curr)는 현재 요소를 문자열에서 정수로 변환합니다.
• acc + parseInt(curr)는 누적 값에 현재 요소를 더합니다.
• 0은 초기 값입니다. 즉, 누적이 시작될 때의 값입니다.
스터디 피드백
// 숫자를 문자열로 바꿀 수 있음
String(n)
n.toString()
n+""
// 문자가 숫자로 변함
+"1"
슈도코드 활용해보기
[CS] 의사코드의 개념과 작성법 (슈도코드, Pseudo-code)
의사코드 (슈도코드, Pseudo-code) 의사코드는 프로그래밍 언어를 코드로 작성하기 전에, 무엇을 어떻게 동작하도록 자성할 지에 대하여 사람이 이해할 수 있는 언어로 작성하는 것이다. 의사코드
ittrue.tistory.com
'Coding Test' 카테고리의 다른 글
프로그래머스 | 나이 출력, 숫자 비교하기, 두 수의 합, 두 수의 나눗셈, 각도기 (1) | 2024.06.09 |
---|---|
프로그래머스 | 두 수의 차, 두 수의 곱, 몫 구하기 (1) | 2024.06.09 |