목록전체 글 (126)
차차로그
좋은 코드의 조건 1. Readble : 읽고 이해할 수 있는가 2. Efficieny : 메모리를 효율적으로 사용하는가 3. Scalable : input의 규모가 커져도 느려지지 않는가 BIG-O는 코드가 Scalable한 코드인지, 알고리즘을 수행할 때 시간이 얼마나 걸리는지를 측정할 때 사용하는 일종의 언어 컴퓨터는 한정된 메모리 공간만을 가지기 때문에 메모리를 효율적으로 관리해야 한다. BIG O의 종류 BIG-O는 input의 증가에 따라서 runtime이 얼마나 빠르게 증가하는지를 측정하는 것이지, 특정 작업이 수행되는데 시간이 얼마나 걸리는지 측정하는 것이 아니다! 1. O(1) : Constant Time 상수시간이라 부르며 input이 얼마가 되었든 runtime이 변하지 않는다. 배열..
function solution(s){ var arr = []; s = s.split(""); for(var i = 0; i 0 ? 0 : 1; } 이번 문제도 효율성에서 어려움을 겪었다. 입력이 100만인 경우에는 n이나 nLogn 알고리즘을 사용해야 효율성 테스트에서 통과를 할 수 있다고 한다. 시간 알고리즘에 대해서 공부를 해봐야겠다.. 배열 하나를 선언하고, 문자열 s를 split을 이용해 배열로 만들어준다. s의 길이만큼 반복을 하고 char 변수에 s배열의 i값을 저장해준다...
function solution(brown, yellow) { var answer = []; var sum = brown + yellow; for(var i = sum; i >= 1; i--){ if(sum % i == 0){ answer.push(i); } } for(var i = 0; i < answer.length; i++){ for(var k = 1; k < answer.length; k++){ if((answer[i]-2) * (answer[k]-2) == yellow){ return [answer[i], answer[k]]; } } } } 이번 문제의 핵심은 노란 타일 부분은 중간에 있고 갈색 테두리 한 줄이 감싸고 있다는 것이다. 그것을 간과하고 풀면 TC 4,6,7에서 계속 오류가 발생한다..
function solution(n) { var answer = 0; var num = n.toString(2).split("1").length; while(true){ answer = ++n; if(answer.toString(2).split("1").length == num){ break; } } return answer; } n 다음 큰 수가 n을 2진수로 변환했을 때 1의 개수와 같기 때문에 1의 개수를 변수 num에 미리 저장해둔다. 다음 수를 찾을 때까지 계속 값을 더해야하기 때문에 while 반복문을 돌려 n에서 1씩 더하면서 그 값(answer)을 2진수로 변환하고 1의 개수가 num과 같다면 반복문을 빠져나오고 answer를 리턴해준다.
function solution(n) { var answer = [0,1]; for(var i = 2; i
function solution(n) { var answer = 0; var iNum = 1; var cnt = 0; for(var i = 1 ; i n){ answer = 0; i = iNum++; } } return cnt; } 연속된 자연수만 더해서 N을 만들어야하기 때문에 1, 2, 3.. 이런식으로 1씩 커지는 수를 계속 더한 후 그 수가 N이 된다면 cnt를 1씩 올려주고, answer는 다시 0으로 i는 1씩 올려준다. 예를 들어 N이 15일 때, 1부터 5까지 더해 15가 나왔다면 answer는 0으로 초기화해주고 i는 2로 올려서 2부터 값이 더해지게 해준다. answer가 n보다 커지면 answer를 0으로 만들고 i도 값을 1씩 올려서 다시 계산을 해준다.