일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- json-server
- 이코테
- 알고리즘
- 리액트
- 항해99
- C++
- 매일메일
- Python
- 프로그래머스
- JavaScript
- useDispatch
- react-redux
- SW
- 코딩테스트합격자되기
- 항해플러스
- maeil-mail
- redux-saga
- java
- 테코테코
- Algorithm
- axios
- 자바
- redux-toolkit
- programmers
- createSlice
- Get
- react
- redux
- react-router
- sw expert academy
- Today
- Total
목록프로그래머스 (113)
Binary Journey
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/ZG4Bi/btrbHbpFSfW/xAZnHTI8lqSAOUww41kk00/img.png)
지난주에 응시했는데 늦게 응시했다. 근데 그렇다고 추천을 많이 받을 만한 신박한 풀이를 제출한 것도 아니었다. 오늘로 1주차 챌린지가 끝났으니 내 풀이를 올려보겠다. 출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges 문제를 보면 등차수열의 합이다. 등차수열의 합 공식을 이용하면 된다. 100 + 200 + 300 .. -> 100 * (1 + 2 + 3 ..) 3 + 6 + 9 + 12... -> 3 * (1 + 2 + 3 ...) 결국 price * 시그마 n 으로 위 이미지에서 첫번째 식을 사용하면 된다. ** Javascript function solution(price, money, count) { const total = pric..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bdZj8R/btrbEf6bCHb/ZNNwZWbeBfsUq9oFKdaKn0/img.png)
출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges ** Javascript function solution(n) { return `${n}`.split("").map((s) => parseInt(s)).reverse(); } 혹은 function solution(n) { return `${n}`.split("").map((s) => +s).reverse(); } 정수 내림차순으로 배치하기 문제를 응용하여 (https://binaryjourney.tistory.com/101) 작성한다면 function solution(n) { var nums = []; do{ nums.push(n % 10); n = Math.floor(n / 10); } ..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/AbgvJ/btrbvaSBM10/MB5ZWYhCOFHNTdG6kWMhJ1/img.png)
출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges ** Javascript 1) 첫번째로 제출한 풀이다. function solution(n) { return parseInt(n.toString().split("").sort((a,b) => b-a).join("")); } 2) 다음 풀이도 가능하다. function solution(n) { return parseInt(n.toString().split("").sort().reverse().join("")); } sort() 메소드와 reverse() 의 경우 기본적으로 string 을 다룬다. 숫자 정렬의 경우 오름차순은 (a, b) => a - b 내림차순은 (a, b) => b- a ..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/CHPNz/btrbCuvKkdP/H7bnMgtnFqeztZkeyNrhRk/img.png)
출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges ** Javascript 1) 내 첫식은 이랬다 function solution(arr) { var answer = [ ...arr ]; answer.sort((a, b) => b - a).pop(); return arr.length === 1 ? [-1] : answer; } 테스트 케이스가 적어서 걸리진 않았는데 완벽한 건 아니다. 문제에서는 그냥 제일 작은 수를 제외시키라는 건데 나는 내림차순 정렬까지 한 경우라 조금 어긋난다. 보완한 식은 아래식인데 사실 내가 직접 알고 작성한 건 아니다. 그런데 제출이 아래 풀이로 되어 있다. 통과된 풀이에는 Math 안 썼는데 function s..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bfrcJ9/btrbbTiQ643/n4bR6tBgRcDWkbNrAIZtt1/img.png)
출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges 이번 문제는 상당히 쉽다. ** Javascript function solution(num) { return (num % 2 === 0) ? "Even" : "Odd"; } 0 을 false로 인식하는 javascript 특성을 살려 바꾸면 function solution(num) { return (num % 2) ? "Odd" : "Even"; } 이렇게 까지 가능하다. ** Java 역시나 초간단 class Solution { public String solution(int num) { return (num % 2 == 0) ? "Even" : "Odd"; } } ** Python 간단..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/beOObE/btraWvjnFTA/L4z23nY7MHYcKkKcYA1w10/img.png)
출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges ** Javascript 1) 내 첫번째 풀이는 이렇다 function solution(n) { let number = n; let answer = 0; while (number !== 1) { if (number % 2) { number = number * 3 + 1; } else { number /= 2; } answer++; if (answer === 500) { return -1; } } return answer; } 2) 코드를 간결하게 줄여보았다. function solution(n) { let answer = 0; while(n > 1) { n = (n % 2) ? n * 3 ..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/tvTPD/btra1ZdqUal/5yJugt53XsKK0iSHYz6bsK/img.png)
출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges https://programmers.co.kr/learn/courses/30/lessons/12940 코딩테스트 연습 - 최대공약수와 최소공배수 두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수, solution을 완성해 보세요. 배열의 맨 앞에 최대공약수, 그다음 최소공배수를 넣어 반환하면 됩니다. 예를 들어 두 수 3, 12의 programmers.co.kr 내 풀이는 이렇다. ** Javascript function greatestCommonDivisor(x, y) { return y ? greatestCommonDivisor(y, x % y) : x; } functi..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/TYLG1/btrcVjHgKjN/J7O3pbVxj1Ds3K4ecD2381/img.png)
출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges ** Javascript 문제를 보고 ASCII CODE로 shift 해야 한다는 걸 직감했다 그래서 구글링 해봤더니 Caeser Cipher 라는 게 있었다. 이게 문제 제목에서 가리킨 시저 암호였다. 처음 소스는 이랬다. (하지만 제출은 안 했다. 갓택오버플로우 베낀 소스여서) 1) function solution(s, k) { var n = 26; // alphabet letters amount if (k { if (c.match(/[a-z]/i)) { con..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/c4hFwa/btranXl0IxA/V66npBTqny0EmGExwcyRok/img.png)
출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges ** Javascript 나의 풀이다. (프로그래머스 풀다 보니 reduce에 대해 호기심이 생겨 level1 에서 reduce를 엄청 사용하기 시작하였다.) function solution(arr) { return arr.reduce((acc, curr) => acc + curr) / arr.length; } ** Java java는 그냥 for문을 돌렸다. for문이 가장 빠르다고 매번 갓택오버플로우에서 얘기가 나왔기에 class Solution { public double solution(int[] arr) { double answer = 0; for (int i = 0; i < ar..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bbOcFv/btrakSlDVWJ/PCHzUjyKrNGLqMg4RerE3k/img.png)
출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges ** Javascript 1) 나의 첫번째 풀이는 이렇다. function solution(x) { const arrX = `${x}`.split("").map((n) => parseInt(n)); let sum = 0; for (const num of arrX) { sum += num; } return !(x % sum); } 2) reduce 를 좋아하는 지금의 나 function solution(x) { return !( x % `${x}`.split("").reduce((acc, curr) => { acc += parseInt(curr); return acc; }, 0)); } 욕심..