일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 알고리즘
- Migratory Birds
- Birthday Chocolate
- Time Conversion
- A Very Big Sum
- 짝수와 홀수
- #nodejs#express
- Between Two Sets
- Algorithm
- 생활코딩
- hackerrank
- git
- Apple and Orange
- 프로그래머스
- javascirpt
- 노드
- Data Structure
- alogrithim
- Grading Students
- Sock Merchant
- algorithim
- Ellectronics Shop
- 자료구조
- Breaking the Records
- Drawing Book
- 자바스크립트
- Javascript
- nodejs
- #nodejs#노드js
- Divisible Sum Pairs
- Today
- Total
목록Algorithms (59)
ian의 개발일기장
1. 나의 풀이 array의 reduce 메소드를 이용했다. 2. 정리 for문을 이용해도 좋지만, reduce를 이용하면 배열의 모든 원소의 합을 구할 수 있다. 출처 - HackerRank, MDN공식문서
1. 나의 풀이 스택을 이용해서 풀었다. 우선 입력한 string을 배열로 바꿔준후, for문을 돌며, '(' 또는 '{' 또는 '['를 저장소에 넣고, 반대되는 괄호랑 합쳐서 모양이 되는지 판단하고, storage.length를 이용해서 결과를 return 하였다. 2. 다른사람 풀이 for문을 이용해서 증감연사자를 활용하였다. 3. 결론 ++나 --가 앞에 붙은것과 뒤에붙은것에 차이는 무엇인가? 찾아봐야겠다. 4. 정리 ++가 뒤에 붙으면 식이 계산된 후에 값이 수정이 되고, ++가 앞에 붙으면 식이 계산되기 전에 값이 수정이된다. 출처 - 프로그래머스, MDN공식문서
1. 나의 풀이 slice메소드를 이용해서, 배열을 자른후, answer에 push해서 최종적으로 return하였다. 2. 다른사람 풀이 for문이 아닌 map을 이용했다. 그래서 answer 배열을 따로 만들 필요가 없다. 3. 결론 Map은 결과를 배열로 return한다! 4. 정리 Map - callback의 return값을 모아서 배열로 return 시켜준다! 출처 - 프로그래머스, MDN공식문서
1. 나의 풀이 간단하게 String.repeat 메소드를 이용했다. 2. 다른사람 풀이 String.repeat 대신 for문을 중첩하여 구현하였다. 3. 결론 String.repeat을 알면 유용하지만, 몰라도 구현 할 수 있는것이 중요하다. 4. 정리 반복할 문자열.repeat(반복할 횟수) 출처 - 프로그래머스, MDN공식문서
1. 나의 풀이 for문을 써서, 1~n까지 숫자를 담은 배열을 만든 후, 2중 for문을 이용하여, 각각 합을 구해서 n이 되면 count를 올리는 방식으로 했다. 2. 다른사람 풀이 사실 이코드는 저도 이해가 가질 않습니다. 공부해서 찾아보고, 수정하겠습니다. 3. 결론 for문에서 break, continue에 대해 정리해야겠다. 4. 정리 for문이 중첩되있다. 하지만 break걸어주는건 내부의 for문이기때문에 i와 관련된 for문은 다 돌아간다. 사진이 짤렸지만, 0~5가 찍히는것은 10번 반복된다. j에 관련된 for문은 j===6이면 멈추게 된다. break을 쓰면 loop가 종료된다는것을 알 수 있다. 출처 - 프로그래머스, MDN공식문서
1. 나의 풀이 여러개 숫자가 있을 때, 최소공배수를 구하기 위해서 2개씩 짝지어서 최소공배수를 구했다. 그러기 위해서 2개 숫자의 최소공배수를 구하는 함수를 만들었다. 그다음 while문을 통해서, 모든숫자를 돌아서 전체의 최소공배수를 구했다. 2. 다른사람 풀이 나와 다른점은 최대공약수를 구할 때, 재귀함수를 이용했다. 그리고 전체를 reduce를 통해서 함수를 돌았다. 3. 결론 reduce를 조금더 잘 활용해야겠다. 4. 정리 출처 - 프로그래머스, MDN공식문서, 위키피디아
1. 나의 풀이 각 숫자의 크기를 비교하기 위해서, split을 이용해 문자열을 배열로 바꾼후, map을 이용해 모든 원소를 숫자로 바꾸었다. 그다음 sort로 오름차순을 한 후, 최솟값과 최댓값을 return하였다. 2. 다른사람 풀이 spread operator와 Math함수를 이용했다. 간단한 풀이이다. 3. 결론 speard operator에 익숙해져야겠다. 4. 정리 ES5Math.max.apply(null, arr) => 배열의 최댓값을 구할 수 있다.Math.min.apply(null, arr) => 배열의 최솟값을 구할 수 있다. ES6Math.max(..arr) => 배열의 최댓값을 구할 수 있다.Math.min(...arr) => 배열의 최솟값을 구할 수 있다. 출처 - 프로그래머스, ..
1. 나의 풀이 2진법으로 직접 바꾸려다가 toString이라는 좋은 메소드가 있어서, 이것을 이용했다. 그리고 1의 개수가 같은것을 파악하기 위해서 정규표현식과 match 메소드를 이용했다. 2. 다른사람 풀이 로직은 거의 똑같다. 3. 결론 정규표현식과 toString에 대해서 조금더 알게되었다. 다만, toString이 아닌 직접, 10진법 숫자를 2진법으로 바꾸는 로직을 구현해봐야겠다. 4. 정리 10진법 => n진법으로 바꾸기 : Number.toString(바꿀진법숫자) 출처 - 프로그래머스, MDN공식문서
1. 나의 풀이 먼저 첫번째문자를 제외한 모든문자가 소문자이므로, 소문자화시켜서 split을 이용해 배열로 만들었다.그다음 그배열을 다시 map을 이용해서 첫번째문자만 대문자로 만들고 join을 이용해서 원래의 문자로 만들었다.다만 typeof 를 쓴 이유는 공백이 1개가아닌 두개이상 일 때, 판단하기 위해서이다. 2. 다른사람 풀이 정말 간단하게 풀었다. 나와 생각은 비슷하지만 이게더 간단하다! for문을 이용한 간략한 풀이이다. 깔끔하다. 3. 결론 substring에 익숙해져야겠다. 사실 비슷하게 slice도 있다. 4. 정리 시작인덱스부터 마지막인덱스문자열을 제외하고 리턴한다. substr과는 다르다. 출처 - 프로그래머스, MDN공식문서
1. 나의 풀이 재귀를 이용해서 풀려고 했더니, 테스트케이스에서 시간초과로 막혔다. 그래서 while문을 이용해서, 피보나치수를 담는 result배열을 구했고, n이 2이상이면 n번째 피보나치수를 1234567로나눈 나머지를 리턴하라고 했으므로, result에 push를 해줄 때, 합을 나누어서 넣어주었다. 2. 다른사람 풀이 이풀이는 재귀를 이용한 풀이이다. 하지만 지금은 효율성체크에서 막힌다. for문을 이용한 간략한 풀이이다. 깔끔하다. 3. 결론 시간복잡도에 대해서 점점 더 생각을 가져봐야할것 같다. 4. 정리 고등학교 수업시간에 배웠었는데.. 코딩으로 풀려고 하니 다르다. 수열파트에서 배웠던부분인데.. 피보나치에 대한 설명은 위키로 남겨둔다. n번째 피보나치수 구하는 공식이 있는데 컴퓨터로는 소..