algo 1
Sparta coding
Innovation Camp
- 1 직사각형 별찍기
process.stdin.setEncoding('utf8');
process.stdin.on('data', data => {
const n = data.split(" "); // 5,3 을 쪼개서 53이 아니라 각각의 수 a,b로 쏴줌
const a = Number(n[0]), b = Number(n[1]);
const row = "*".repeat(a)+'\n'
const col = row.repeat(b)
console.log(col)
});
// 풀이
// 1. n개수만큼 '*'반복 (row)
// 2. 1을 m만큼 반복하기(column) 줄바꿈issue
//feedback
const row = "*".repeat(a),'\n' //줄바꿈을 ,로 추가해서 띄어씌기
const col = row.repeat(b)
console.log(row,col) //col에 row가 담겨잇는데 다시 호출함
// 수민님 풀이
for(let i = 0; i<b; i++){
let ans = ""
for (let j = 0; j<a; j++){
ans = ans + "*"
}
console.log(ans)
}
// 팀원님들이 순서를 바꿔도 상관없는지? 변수이름은상관없움
// for(let j = 0; j < b; j++) {
let ans = ""
for (let i = 0; i < a; i++) {
ans = ans + "*"
}
console.log(ans)
- 2 짝수와 홀수
const solution = (num) => {
return num % 2 === 0 ? "Even" : "Odd";
};
// 문제이해
// let 'a'에 답을 담고
// 주어지는 값 'num'을 2로 나누고
// 남는 나머지(%)가 0이면 짝수(Even)
// 이외의 값이면 홀수(Odd)로 판단하는 알고리즘
// 마지막으로 a값을 리턴해서 판별
function solution(num) {
if (num % 2 == 0) {
return "Even";
} else {
return "Odd";
}
}
function solution(num) {
return num % 2 == 0 ? "Even" : "Odd";
}
// issue#1 0은 짝수가 아님? / 짝수로 정해줌
// ternary operator(조건부 삼항 연산자)
// if문의 true / false 의 코드양을 줄일 수 있음
// https://developer.mozilla.org/ko/docs/Web/JavaScript/Re
- 3 가운데 글자 가져오기
function solution(s) {
return s.substr(Math.floor(s.length / 2) - 1, s.length % 2 == 0 ? 2 : 1);
}
// 이해
// var S 는 1~100의 length를 random하게 가져오는 string
// even일 땐 두 글자를 return
// 풀이
// s.substr([a],[b]) 문자열의 a번째부터 b개수만큼 return
// s.substr( s.length/2 , s.length%2 == 0 ? 짝수일 때 2개 : 홀수일 때 1개 )
- 4 두 정수 사이의 합 계산을 하다보니 ‘등차수열의 합’공식과 거의 같음
//arrow 함수 써보고 싶어서 (if문 축약?)
const solution = (a, b) =>
//
function solution(a, b) {
let n = 0;
if (a == b) {
n = a;
} else {
n = (a + b) * ((Math.abs(a - b) + 1) / 2);
}
return n;
};
// 이해
// 1. a,b 사이의 정수값을 모두 더해서 출력
// 풀이
// - 등차수열? 공통차이값을 가진 수의 나열 / 등차수열의 합?
// (a+b)*{(a~b사이의 정수개수/2)반올림} = 등차수열의 합 / x
// (a+b)*{(a~b사이의 정수개수/2)버림}+(a+b)/2 = 등차수열의 합? / x
// (a+b)*Math.ceil(a~b사이의 정수개수/2)
// (a+b)*Math.ceil((Math.abs(a-b)+1)/2)
// 2. 값이 같으면 그대로 출력 o
function solution(a, b) {
let n = 0;
if (a == b) {
n = a;
} else {
n = (a + b) * Math.floor((Math.abs(a - b) + 1) / 2) + (a + b) / 2;
}
return n;
}
- 5 문자열을 정수로 바꾸기
const solution = (s) => {
return Number(s);
};
// 이해
// s 는 1~5길이의 ramdom string
// 앞에 부호 +,- 가 올 수 있고 0으로 시작x
// 풀이
// Number() : string > int type으로 바꾸 / 편리한 함수가 있었음
// function solution(s) {
// var answer = 0;
// answer = Number(s)
// return answer;
// }
- 6 없는 숫자 더하기
function solution(numbers) {
var answer = -1;
return answer;
}
// 이해
// 1. 배열 numbers에 0-9사이의 ramdom 정수(중복x)
// 2. 이때 배열에 속하지 않은 수들의 합
// 풀이
// for 문으로 i값을 1씩 증가시키고 i가 배열에 들어있는지 확인?
// if문 이 때 false인 값들을 더해라
// 참고
// indexOf 찾는값의 인덱스 return
// includes 찾는값 boolean return
function solution(numbers) {
var answer = -1;
for (let i = 0; i < 10; i++) answer += numbers.includes(i) === false;
return answer;
}
//실패
- 7 음양 더하기
function solution(absolutes, signs) {
var answer = 123456789;
return answer;
}
// 1. 정수(절대값)가 담긴 배열 absolutes
// 2. 부호가 담긴 signs
// 3. signs와 absolutes는 같은 길이를 가짐
// 4. 이 떄 정수들의 합
// 살려주세요
- 8 평균 구하기
let solution = (arr) => { // => 함수로 이식해봄
let answer = 0;
let s = 0;
for (let i = 0; i < arr.length; i++) {
s += arr[i];
}
return answer = s / arr.length;
}
function solution(arr) {
let answer = 0; // 0, '' / int, str차이?
let s = 0;
for (let i = 0; i < arr.length; i++) { // for문 돌린 i를 arr의 인덱스로 받음
s += arr[i]; // s에 arr 요소의 합을 담음
}
return answer = s / arr.length; // 요소의합s 를 배열의 길이로 나눔
}
// 이해
// 1. 1~100 이하 random크기의 배열(array)
// 2. 배열안의 원소(element)는 -10,000 ~ 10,000 안의 random정수
// 평균값을 구하는 함수
//풀이
// 요소를 전부 더해서 배열의 길이로 나누자
const solution(arr) => {
arr.reduce(cur);
}
function solution(arr) {
arr.reduce(accumulator[currentValue]);
}
// array.reduce() / .reduce method 사용실패 parameter가 이해 안됨