본문 바로가기

알고리즘

같은 숫자는 싫어 ! 알고리즘 자세한 문제는 아래 프로그래머스 링크 참조바란다. https://school.programmers.co.kr/learn/courses/30/lessons/12906 나의 풀이는 아래와 같다. function solution(arr) { var answer = [] arr.map((_, i)=>{if (arr[i]!==arr[i-1]) { answer.push(arr[i]) } }); return answer } arr = [4,4,4,3,3] console.log(solution(arr)) 풀면서 중요했던 포인트는 map() 메서드가 arr을 돌면서 이전 인덱스 요소와 값이 다른 요소만 var answer [] 배열에 넣는다는 것이다. 굳이 빈 배열을 하나 만들것도 없이 그냥 arr에다 필터를 써서 이전.. 더보기
자연수가 몇 번째 콜라프 작업에서 1이 되는지 파악하는 알고리즘 문제는 제목 그대로다. 만약 그 자연수가 500번째 콜라프 작업으로도 1이 되지 않는다면 함수는 -1을 반환해야 한다. 자세한 문제는 아래와 같다. https://school.programmers.co.kr/learn/courses/30/lessons/12943 재귀함수를 써야 할 거 같아서 1.5시간 이상 고생했으나 실패했다. 여기 while문으로 해결한 사례가 있어서 주석으로 파보았다. 코드는 거의 외운거 같다. function collatz(num) { var answer = 0 ; while(num !== 1 && answer < 500) { // answer 더보기
배열 2개의 내적 구하는 알고리즘 feat. reduce(acc, _, i) 내적이란 단어는 생소하지만 문제에 대한 자세한 설명은 아래 링크에 있다. https://school.programmers.co.kr/learn/courses/30/lessons/70128 아래는 나의 답안이다. function solution2(a, b) { var answer = 0; for(let i =0; i < a.length; i++) { answer = answer + a[i]*b[i] } console.log(answer); return answer; } a = [-1,0,1] b = [1,0,-1] solution2(a,b) 참 쉽다 쉬워~ 이러면서 풀었는데 reduce(acc, ___, i) 라는 메서드를 써서 만든 답안을 보고 깜짝 놀랐다. 답안은 아래와 같다. 내가 상세한 주석을 덧붙.. 더보기
두 정수 사이에 있는 정수들의 합을 구하는 알고리즘 제목과 같은 코딩테스트 문제이다. 자세한 내용은 아래와 같다. https://school.programmers.co.kr/learn/courses/30/lessons/12912 나의 순도 99% 답안은 아래와 같다. 자세한 내용은 주석 참조. function solution(a, b) { var answer = 0; // 일단 answer는 0 이다. if(a 더보기
문자열의 가운데 글자를 가져오는 알고리즘 제목 그대로다. 문제는 아래 링크와 같다. https://school.programmers.co.kr/learn/courses/30/lessons/12903 내가 작성한 버전이다. function solution(s) { var answer = ''; answer = s.length % 2 === 0 ? // 문자열 s의 문자개수가 짝수라면 : 앞의 것을 answer에 넣는다. s.slice(s.length/2-1, s.length/2+1) : // slice 메서드로 가운데 2개의 문자열 추출한다. s[Math.floor(s.length/2)] // s의 문자개수가 홀수라면 s.length/2를 하면 n.5 가 나온다 // floor 메서드로 내림하여 가운데 문자열의 순서를 찾는다. console.lo.. 더보기