2022.05.13 TIL

E__ppo·2022년 5월 13일
0

cote

목록 보기
1/5
post-custom-banner

1.직사각형 별찍기 코드

process.stdin.setEncoding('utf8');
process.stdin.on('data', data => {
    const n = data.split(" "); 
    const a = Number(n[0]), b = Number(n[1]); 
    for(let i=0; i<b; i++){ 
        let line = ""; 
        for(let j=0; j<a; j++){ 
            line = line + "*" 
        } 
    console.log(line) 
    }


});

2.짝수와 홀수

function solution(num) {
    var answer = '';
    if(num%2==0){
       answer = "Even"
       }
       else{
           answer ="Odd"
       }
    return answer;
}

3.가운데 글자 가져오기

function solution(s) {
    var answer = '';
    
    if (s.length % 2 == 0 ) { 
        answer = s[s.length / 2 - 1] + s[s.length / 2];
    } else {
        answer = s[Math.floor(s.length/2)]; 
    }
    return answer;
}

4.두 정수 사이의 값... 나는 코드 몽키다...

function solution(a, b) {
    var answer = 0;
    
    if(a===b){
        answer=a
    }else if(a<b){
      for(i=a; i<=b; i++){
          answer+=i   
      }
    }else{
        for(i=b; i<=a; i++){
        answer+=i
        }
    }
            
             
    
    return answer;
}

※참고하면 좋은 함수 Math.min / Math.max

function adder(a, b, s = 0){
  for (var i = Math.min(a, b); i <= Math.max(a, b); i++) s += i;
  return s;
}

※ 가우스.....갓...

 return (a+b)*(Math.abs(b-a)+1)/2;

5.문자열을 정수로 바꾸기 텍스트

이렇게 간단하다고...?

function solution(s) {
    var answer = 0;
    answer = parseInt(s)
    return answer;
}

미친.. 엄청난 사실..
※문자열과 숫자열의 사칙연산은 숫자가 나오게 됩니다

 return str/1

엄청난 자괴감이 든다...

6. 없는 숫자 더하기

function solution(numbers) {
    var answer = 0;
    
    for(i=0; i<=9; i++){
      if(numbers.includes(i)){
         }else{
              answer+=i
      }

     }
    
    return answer;
}

#참고하면 좋은 코드... reduse 함수 찾아볼 것

eturn 45 - numbers.reduce((cur, acc) => cur + acc, 0);

arr.reduce(callback[, initialValue])

자바스크립트의 reduce함수는 배열의 각 요소를 순회하며 callback함수의 실행 값을 누적하여 하나의 결과값을 반환

parameter ▽

accumulator - accumulator는 callback함수의 반환값을 누적합니다.
currentValue - 배열의 현재 요소
index(Optional) - 배열의 현재 요소의 인덱스
array(Optional) - 호출한 배열

callback함수의 반환 값은 accumulator에 할당되고 순회중 계속 누적되어 최종적으로 하나의 값을 반

initialValue(Optional)
최초 callback함수 실행 시 accumulator 인수에 제공되는 값, 초기값을 제공하지 않을경우 배열의 첫 번째 요소를 사용하고, 빈 배열에서 초기값이 없을 경우 에러가 발생

1-10까지 더하기 예제

const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

const sum1 = numbers.reduce((accumulator, currentNumber) => accumulator + currentNumber);

console.log('sum1 =', sum1);

7.음양 더하기

function solution(absolutes, signs) {
    var answer = 0;
    
    for(i=0; i<absolutes.length; i++){
        if(signs[i]){
             answer+=absolutes[i]
        }else{
            answer-=absolutes[i]
        }
    }        
    return answer;
}

8.평균값 구하기 **

function solution(arr) {
    
    let answer = 0;

    for(i=0; i< arr.length; i++){
      answer+=arr[i]
    }
   
    return answer/= arr.length;
}

9.핸드폰번호 가리기

function solution(phone_number) {
    var answer = '';
    
    for(i=0; i<phone_number.length; i++){
       if(i<phone_number.length-4){
           answer+="*"
       }else{
           answer+=phone_number[i]
       }
    }

    return answer;
}

for문은 프로그램을 무겁게 하기 때문에 가급적이면 쓰면 안되는데 생각나는게 for문이랑 if문밖에 나는 코린이..

#참고하면 좋은 코드 / 정규식 공부하자. 데이터 한줄에 깔끔하게 끝난다... 진짜 최고다

return s.replace(/\d(?=\d{4})/g, "*");

경험이 부족해서 아직 함수 사용할 생각을 못하는 거겠지?
...슬라이스 함수 배웠잖아 멍청아!
사실은 이게 정말 베스트한 답인듯..
생각 좀 하고 코드짤 것 반성해라

var result = "*".repeat(s.length - 4) + s.slice(-4);

10.행렬의 덧셈

와 진짜 다차원배열이 난이도 [하] 라고? 제정신이에오?
아니 그냥 내가 부족한거겠지 흑흑

function solution(arr1, arr2) {
    
    let answer=[[]]
   
    for(i=0; i<arr1.length; i++){
        answer[i]=[];
        for(j=0; j<arr1[i].length; j++){
            answer[i].push(arr1[i][j]+arr2[i][j])
        }
       
    } 
    
    return answer;
} 

코테 풀면서 알게된 점
javascript는 엄밀히 말하면 2차원 배열이라는 게 없음
javascript의 다차원 배열은 배열안의 배열
javascript의 배열은 초기화없이 사용할 수 없음
let answer = Array(arr1.length).fill(null).map(() => Array());
.map과 .fill을 사용해서 null 값으로 채워줘서 동적할당 하는 방법
let answer = Arry.from(Array(arr1.length),() => Array());
Arry.from을 통해서 동적할당 하는 방법

값은 .push로 받음.

11. X만큼 간격이 있는 n개의 숫자.

function solution(x, n) {
    let con = 0
    var answer = []
    
    for(i=0; i<n; i++){
        answer.push(con +=x)
    }    
    return answer;
}

이걸 왜 7점이나 주지

function solution(x, n) {
    return Array(n).fill(x).map((v, i) => (i + 1) * v)
}

와... 진짜 어떻게 이런 생각을 하지
방금전에 fill().map 위에 써놓고 나는 금붕어인갘ㅋㅋㅋㅋㅋㅋㅋㅋ
fill(x).map(v,i,x) v 요소의 값 === x / i 인덱스 / x 순회하는 대상

나 다음에 이거 꼭 쓰고 말꺼야 부들부들

post-custom-banner

0개의 댓글