본문 바로가기

반응형

코딩 연습

[프로그래머스] level2. 큰 수 만들기 (javascript) 문제 프로그래머스 문제 링크 나의 풀이 처음에 나름 풀이를 해보았는데, test케이스만 통과되고 실제 채점을 전부 실패가 떠서 인터넷 검색을 해서 찾아보았다. 다른이의 풀이 [JS] 프로그래머스 - 큰 수 만들기 1. 문제 설명 2. 제한 조건 3. 입출력 예 4. 나의 풀이 쉽게 생각했다가 큰 코 다친 문제다. 예상치 못했던 테스트 케이스 10에서의 시간 초과는 멘붕 그 자체였다. 그런데 이 문제가 탐욕법이라는 taesung1993.tistory.com 위 블로그에서 가져온 코드입니다 :) 친절한 설명이 필요하시다면 읽어보시는걸 추천드립니다! function solution(number, k) { let stack = []; for(let i = 0 ; i < number.length;i++){ let.. 더보기
[프로그래머스] level2. [3차] 압축 (javascript) 문제 프로그래머스 문제 링크 나의 풀이 function solution(msg) { var answer = []; let obj = {}; let arr = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" arr = arr.split(""); for(let i = 0 ; i < arr.length;i++){ obj[arr[i]] = i+1 } let max = 1; for(let i = 0 ; i < msg.length;){ let w = msg[i]; for(let j = 0 ; j < max;j++){ const tmpw = msg.substring(i,i+max-j) if(obj[tmpw]){ w = tmpw break; } } let c = msg[i+w.length]; if (!c) c= ".. 더보기
[프로그래머스] level2. 구명보트 (javascript) 문제 프로그래머스 문제 링크 나의 풀이 문제를 제대로 이해하지 못했다. 다른이의 풀이 function solution(people, limit) { var answer = 0; people = people.sort((a,b)=>b-a) for(let i =0, j = people.length-1; i 더보기
[프로그래머스] level2. [3차] 파일명 정렬 (javascript) 문제 프로그래머스 문제 링크 나의 풀이 function solution(files) { var answer = []; answer = files.sort((a,b)=>{ const first = a.toUpperCase().match(/\D+/gi)[0]; const second = b.toUpperCase().match(/\D+/gi)[0]; if(first !== second){ return (first > second) ? 1 : -1 } return +a.match(/\d+/gi)[0] - (+b.match(/\d+/gi)[0]) }) return answer; } split, match를 정규 표현식으로 활용 가능하다는 부분이 중요했던 것 같다. 너무 복잡하게 생각하지 않고 sort 내 함수로 .. 더보기
[프로그래머스] level1. 숫자 문자열과 영단어 (javascript) 문제 문제 나의 풀이 function solution(s) { return +s.replace(/zero/g,0) .replace(/one/g,1) .replace(/two/g,2) .replace(/three/g,3) .replace(/four/g,4) .replace(/five/g,5) .replace(/six/g,6) .replace(/seven/g,7) .replace(/eight/g,8) .replace(/nine/g,9) } replace를 이용해서 풀었다. 또한 number형태로 하기위해 앞에 +를 붙여주었다. 다른 풀이 split와 join을 통해 풀수도 있다. 예를들어 let string = "onetwothree" let arr = string.split("one")위 와 같이 하면 a.. 더보기
[프로그래머스] level2. 점프와 순간 이동(javascript) 문제 프로그래머스 나의 풀이 function solution(n) { var ans = 0; while(n > 1){ if ( n % 2 == 0 ){ n = (n/2) } else{ n = n-1 ans++ } } return ans+1; } n에서 2로 나누어 떨어지면 n/2, 아니면 n-1을 해주는 과정을 1이 될때까지 과정을 반복하고, 마지막에 1을 더해주는것으로 정답을 구했다. ( 0에서 1은 점프를 해야되니까) 다른이의 풀이 const nArr = Array.from(n.toString(2));이와 같이 toString을 통해 2진법으로 만들고 1의 갯수를 세어도 정답이다. 더보기
[프로그래머스] level3. 베스트앨범 (javascript) 문제 [https://programmers.co.kr/learn/courses/30/lessons/42579] 코딩테스트 연습 - 베스트앨범 스트리밍 사이트에서 장르 별로 가장 많이 재생된 노래를 두 개씩 모아 베스트 앨범을 출시하려 합니다. 노래는 고유 번호로 구분하며, 노래를 수록하는 기준은 다음과 같습니다. 속한 노래가 programmers.co.kr 나의 풀이 function solution(genres, plays) { var answer = []; let obj = {}; let obj2 = {}; //obj에 장르의 총 재생횟수, obj2에 장르별 모든 [고유번호,재생횟수]를 넣어주었다. for(let i = 0 ; i < genres.length;i++){ if (obj[genres[i]].. 더보기
[프로그래머스] level1. 약수의 개수와 덧셈(javascript) 문제 프로그래머스 코딩테스트 연습 - 약수의 개수와 덧셈 두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주 programmers.co.kr 나의 풀이 function solution(left, right) { var answer = 0; let diff = right - left; function judge(num){ let cnt = 0; for(let i = 0 ; i 더보기

반응형