목록알고리즘 (7)
모르면 배우면 된다
백준 2525 번 오븐시계 const ovenTime = (hh, mm, time) => { //time을 60으로 나눈 몫quotient과 나머지remainder를 구하기 //mm에다가 remainder 더하기. //1) mm+remainder > 60일 때, remainder = mm+remainder -60 하고, quotient에 +1 //2) mm+remainder =24면, hh = 0 //input 값 유효성검사 if(time=1000){ return 0; } if(!(0hh)){ return 0 ; } if(!(0mm)){ return ; } let HH = hh+ Math.floor(time/60); let MM = mm..

재귀(recursion) 뜻 : 자기 자신을 호출하는 함수. 왜 알아야 하는가? => 모든 곳에서 사용되니까! 재귀는 무수히 많은 곳에서 사용된다. 데이터 구조트리그래프를 생성할 때 or 순회&검색하고자 할 때 재귀가 포함되는 경우가 많다. 때로는 반복 대신 재귀를 사용하는 것이 깔끔하다. 직접 parse 함수나 getElementById 함수를 작성할 때 중요하게 쓰인다. 오류 없이 재귀 함수를 작성하기 위해 알아둬야 할 것 : 함수 실행 순서 관리법 모든 프로그래밍 언어는 함수가 올바르게 실행되도록 만드는 데이터 구조가 있는데, JS는 CALL STACK이라고 부른다. 함수를 호출하면, CALL STACK의 맨 위에 함수가 쌓인다. 마치 종이 더미에 종이가 쌓이는 느낌. 1) JS가 함수를 인식하면,..
배열 2개를 비교할 때 - Frequency Counter 배열 2개를 비교하는 작업에서 중첩 for문으로 비교하는 방법도 있지만, 성능면으로는 for문을 3번 반복하는 것이 훨씬 나음. O(n^2)보다 O(n)이 성능적으로 훨씬 낫기 때문. 특히 JS의 경우 배열/문자열을 비교할 때 객체로 만들어서 사용하면 매우 편리함. 두 개의 배여를 객체로 세분화해 각 배열을 비교할 수 있음. function same(arr1, arr2) { //배열 길이가 같지 않을 때 return false if (arr1.length !== arr2.length) { return false; } let frequencyCounter1 = {}; let frequencyCounter2 = {}; //arr 객체화. 원소(key..
const object ={ name : 'kelly', age : 10, }; 객체의 탐색시간은.. 짧다! 접근, 입력, 수정, 삭제에 걸리는 시간이 O(1)이다. 매우 빠르다는 뜻. 정렬이 돼있지 않다. 어디에 새로운 객체를 넣든지 상관 없다. 정렬 없이 key로만 접근하기 때문에 속도가 빠르다. ex) console.log(object.name); 단, 객체 내장 메소드 중 일부는 O(n)의 시간을 가진다(선형 시간). 프로퍼티 개수가 많아질수록 각 프로퍼티에 접근해 배열에 각각 추가해줘야 하는 시간이 늘어나기 때문이다. Object.keys(object) : 객체의 key를 배열로 반환하는 함수. [’name’, ‘age’] Object.values(object) : 객체의 value를 배열로 반..
Big O -빅오는 왜 필요할까? 알고리즘은 기본적으로 문제를 해결하기 위해 필요한 것. 코드를 일반화하고, 코드의 상대적 성과를 비교하는 방법이 빅오. 어떤 것이 좋은 코드일까? 빅오는 코드의 수준을 상/중/하 등으로 판단한다. 왜 코드가 최고여야만 하지? 그냥 작동만 하면 안 되나? → 아주 많은 양의 데이터를 다룰 때를 생각해 보자. 그때의 성능 차이는 수많은 차이를 많들어냄. 또한 빅오는 버그 수정하려고 할 때, 문제점뿐만 아니라 처리 속도를 늦추는 원인을 이해하는 데 도움을 준다. 즉, 비효율적인 부분을 찾는 데 도움이 된다. 어떤 함수가 제일 나은지 등 문제가 면접에 나오기도 하니, 빅오 표기법을 배워두자! 예시 1부터 n까지 전부 더하는 코드를 만들어야 할 때 1부터 n까지 반복문을 돌리는 ..
https://docs.oracle.com/javase/7/docs/api/java/lang/StringBuilder.html StringBuilder (Java Platform SE 7 ) Inserts the string into this character sequence. The characters of the String argument are inserted, in order, into this sequence at the indicated offset, moving up any characters originally above that position and increasing the length of this sequence by docs.oracle.com StringBuilder를 문자열..

먼저 성공적으로 풀이한 정수 제곱근 판별부터. 문제 임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다. n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요. 나의 풀이 왜 이렇게 풀었냐? n이 101이라고 치자. 제곱근을 구하는 함수 Math.sqrt의 자료형은 double이고, 이것을 double 자료형의 sqrt에 대입했다. 프린트로 찍으면 10.049875621121 같이 소수점으로 나올 것이다. 이 sqrt를 int로 변환하면 10으로 나온다. double 자료형의 sqrt와 int 자료형의 sqrt는 다르다. 만약 둘이 같다면? 정수라는 의미다. 따라서 (int)sqrt == s..