[Day4] 알고리즘

TheJang·2021년 1월 29일
0

알고리즘

목록 보기
5/10
post-thumbnail

문제 1 시저암호

https://programmers.co.kr/learn/courses/30/lessons/12926

문제 풀이

  1. 주어진 문자열을 배열로 바꿔주기위해 split() 함수를 사용하여 바꿔준다.
  2. 문자열을 유니코드로 바꿔준다. charCodeAt() 사용
  3. 소문자와 대문자를 비교해준다.
  4. 그대로 반환 한다.
function solution(s, n) {

  // 배열로 만들어 줌 
    return s.split("").map((str) => {
      // 암호화 코드 생성 + n 
      const code = str.charCodeAt() + n;
          if(str.charCodeAt() >= "a".charCodeAt() && str.charCodeAt() <= "z".charCodeAt()) {
              if(code > "z".charCodeAt()) return String.fromCharCode(code -26);
              return String.fromCharCode(code);
          }

          if(str.charCodeAt() >= "A".charCodeAt() && str.charCodeAt() <= "Z".charCodeAt()) {
              if(code > "Z".charCodeAt()) return String.fromCharCode(code -26);
              return String.fromCharCode(code);
          }
          return " ";
      }).join("");
}

배운 점

  • charAt()

    • 특정 인덱스에 위치하는 유니코드 단일 문자를 반환하는 함수
  • fromCharCode()

    • 유니코드를 문자열로 바꿔는 함수
  • charCodeAt()

    • 문자열을 유니코드로 바꾸는 함수

레퍼런스

문자열을 숫자로 바꾸기

문자열 to 숫자

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/String/charCodeAt

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/String/charAt

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/fromCharCode

문제 2 제일 작은 수 제거하기

https://programmers.co.kr/learn/courses/30/lessons/12935

풀이 1


// Math.min을 사용한 풀이 
function solution(arr) {
    arr.splice(arr.indexOf(Math.min(...arr)) ,1)
    return arr.length === 0 ? [-1] : arr
}

풀이 2

function solution(arr) {
    
    // 비교 순회 
    
    // 임시 변수 선언 
    let temp = 0;
    
    for (let j = 1; j<arr.length; j++){
        if(arr[j]<arr[temp]) {
            temp=j;
        }
    }
    
    arr.splice(temp,1);

    return arr.length === 0 ? [-1] : arr;
}

배운 점

  • Math.min()
  • Math.max()

Array.reduce() 이 함수 또한 배열의 각 값을 비교하여 가장 큰 숫자를 얻을 수 있습니다.

var arr = [1,2,3];
var max = arr.reduce(function(a, b) {
    return Math.max(a, b);
});

spread operator이 함수를 사용하면 배열의 숫자들 중 가장 큰 숫자를 쉽게 얻을 수 있습니다.

var arr = [1, 2, 3];
var max = Math.max(...arr);

레퍼런스

문제 3 자릿수 더하기

https://programmers.co.kr/learn/courses/30/lessons/12931

풀이 1

function solution(n)
{
    var answer = 0;
    
    let arr = n.toString().split("").map((el)=> parseInt(el))
    for(let i=0; i< arr.length; i++){
        answer += arr[i]
    }
    return answer
}   

풀이 2

function solution(n)
{
    return (n+"").toString("").split("").reduce((acc,val)=> acc + parseInt(val),0)
}
profile
어제보다 오늘 더 노력하는 프론트엔드 개발자

0개의 댓글