본문 바로가기

알고리즘구현능력/문제해결능력

(78)
알고리즘 토이 문제 4 피보나치함수를 구현하라.!! 피보나치.. 뭘까?... 처음 들어보는 사람도 있을 것이다... 피보나치 피보나치... 피보나치 수에 대한 것을 아래 링크를 참고하면 훨씬 도움이 될 것이다.. https://ko.wikipedia.org/wiki/%ED%94%BC%EB%B3%B4%EB%82%98%EC%B9%98_%EC%88%98 피보나치 수 - 위키백과, 우리 모두의 백과사전 위키백과, 우리 모두의 백과사전. 피보나치 수를 이용한 사각형 채우기 수학에서, 피보나치 수(영어: Fibonacci numbers)는 첫째 및 둘째 항이 1이며 그 뒤의 모든 항은 바로 앞 두 항의 합인 수열이다. 처음 여섯 항은 각각 1, 1, 2, 3, 5, 8이다. 편의상 0번째 항을 0으로 두기도 한다. 피보나치 수가 처음 언급된 문헌은 기원전 5세기 인..
알고리즘 토이 문제 3번째 부분집합인지 아닌지 불린값 반환문제 isSubsetOF라는 함수가 있다. 두가지 예시를 들어본다. 예시 1) 1 2 3 var a = ['commit','push']라고 했을떄... a.isSubsetOF(['commit','rebase','push','blame']) // true cs 예시 2) 1 2 3 4 5 var b = ['merge','reset','reset'] b.isSubsetOf(['reset','merge','add','commit']) // true cs 집합의 종류엔 배열, 객체 ,숫자, 문자열이 있다. 이것들을 비교해서 있는지 확인할려면 어떤 방법이 좋을까? 정답은 ? (고민해보길 바란다) 힌트는 문자열이다. 더보기 JSON.stringify를 이용하면 된다. 확인할 배열에 모든 배열의 각 요소 값을 문자열로 바..
알고리즘 토이 문제 2. 중복되지 않는 문자를 반환하는 문제. firstNonRepeatedCharacter라는 함수가 있다. 그 함수의 input과 아웃풋은 다음과 같다.. firstNonRepeatedCharacter('ABA'); // => 'B' firstNonRepeatedCharacter('AACBDB'); // => 'C' 두번이상 나오는 문자를 제외한 하나의 문자를 반환한다. 만약에 한번만 나오는 문자가 있다면.. 맨 처음에 나온 문자를 반환한다. 필자는 이 문제를 두가지 방법으로 구현했다. 첫번쨰는 string을 하나의 문자가 담긴 배열구조로 만든다음에.. 그것을 sort시킨다음에 풀었다. 사실 이방법은 좀 오류가 있엇어야 됐을지도 모르겠다. 왜냐하면 한번만 나오는 문자가 있다면 맨 처음에 나온 문자가 호출인데 .. .sort시키면서 그 첫번쨰 문자..
알고리즘 토이 문제 1 풀기. 가위바위보 모든 경우의 수의 배열 구하기.. 가위바위보를 했을때 나올 수 있는 모든 경우의 수를 구해볼려고 한다. 예를들어 1을 입력하면 한명이서 3(가위,바위,보) 세가지 경우가 나오고 예를들어 2를 입력하면 두명이서 3 x 3 9가지 경우의 수가 나온다. n을 입력하면 n명이서 3^n승의 경우의 수가 나온다. 함수에 1을 입력하면 ['rock'],['scissors'],['paper'] 을 출력하고 함수에 2를 입력하면 ['rock','rock'] ,['rock','scissors'],['rock','paper],['scissors','rock'],['scissors','scissors'],['scissors','paper'],['paper','rock'],['paper','sissors'],['paper','paper'] 이걸 그림으로 표현해..
[javascript] 프로그래머스 - 큰 수 만들기 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 function solution(number, k) { let StNum = String(number); let num_length = StNum.length; let stack = []; let count = 0; for(let i=0;i
[javascript] 프로그래머스 - 기능개발 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 //순차적으로 배포가 되어야한다.. function solution(progresses, speeds) { let answer = []; while(progresses.length!==0&&speeds.length!==0){ let cnt = 0; //일 작업량 넣기 for(let i=0;i0){ answer.push(cnt); } } return answer; } Colored by Color Scripter cs 새롭게 알게된점 큐나 스택을 사용할때는 인덱스 설정을 조심해야한다.
[javascript] 프로그래머스 - 스킬트리 1 2 3 4 5 6 7 8 9 10 11 12 function solution(skill, skill_trees) { let newArr = skill.split(""); let str = 0; let count = 0; for(let i=0;i newArr.includes(element)).join(""); if(str === skill.substring(0,str.length)){ count++; } } return count; } Colored by Color Scripter cs skill_trees에 포함된 skill의 문자들을 하나씩 순서대로 해서 문자열을 만든다. 그리고 그 문자열의 길이와 skill의 길이를 같게 해서 비교한뒤 같을 경우에 count를 올린다.
[javascript] 프로그래머스 - 멀쩡한 사각형 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 function solution(w,h){ var answer = 1; let comDiv = commerdivisor(w,h); answer = w*h-(w+h-comDiv); return answer; } function commerdivisor(num1, num2){ let temp = 0; if(num1