본문 바로가기

코딩테스트

같은 숫자는 싫어 ! 알고리즘 자세한 문제는 아래 프로그래머스 링크 참조바란다. 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/12944 순도 99% 나의 답안이라고 봐야겠다. 아래와 같다. 자세한 내용은 주석 참조바란다. function solution(arr) { var answer = 0; answer = (arr.reduce((acc, cur) => acc + cur))/arr.length; // arr 의 첫번째 요소부터 acc에 넣고 두번째 요소는 cur에 들어간다. 그 둘을 더한다. 더한 결과를 또다시 acc에 넣고 그 다음 요소를 더한다. // [번외] 메서드 이름이 reduce 인 이유는 배열의 요소 하나하나를 사용해 함수를 실행하는 과정에서 사용.. 더보기
두 정수 사이에 있는 정수들의 합을 구하는 알고리즘 제목과 같은 코딩테스트 문제이다. 자세한 내용은 아래와 같다. 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.. 더보기
두번째 코딩테스트 [JS문법 종합반 2주차] : 풀이성공 두번째 코딩테스트를 풀어봤다. 이번에는 답안을 보지않고 풀이팁만 보고 풀 수 있었다. 문제는 아래와 같다. 자세한 내용은 url 참조 바란다. https://school.programmers.co.kr/learn/courses/30/lessons/12915?language=javascript 문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 ["sun", "bed", "car"]이고 n이 1이면 각 단어의 인덱스 1의 문자 "u", "e", "a"로 strings를 정렬합니다. 제한조건 strings는 길이 1 이상, 50이하인 배열입니다. strings의 원소는 소문자 알파벳으로 이루어져 있.. 더보기