프로그래머스

[문제][풀이 코드]function solution(n, m, section) { var answer = 1; let drawsection = section[0]; for(let i = 1; i = m ){ drawsection = section[i]; answer++; } } return answer;}[해설]우선 drawsection이라는 변수를 만들어 첫번째로 색칠할 장소인 section[0]에 담고, 처음 칠을 하기 때문에, answer 값을 1을 주고 시작한다. for문으로 section의 length까지 돌고, section[0]의 정보는 이미 들고 있기 때문에 자기 자신을 제외한 section[1]부..
[문제][풀이코드]function solution(nums) { var answer = []; //수가 소수인지 판별하기 const isPrime = (num) =>{ for(let i = 2; i [해설]우선 조건이 3가지의 수를 모두 뽑아서 더하는 것이 조건이고, 해당하는 수가 소수이고 겹치지 않는 수의 총 갯수를 구하는 것이 목표이다.그래서 우리는 우선 3가지의 수를 모두 더하게 3중 for문을 이용하였다. (0,1,2 ) , (0,1,3) ... -> 같은 순서로 진행하기 위해서 다음과 같이 i = 0 이고 j = i + 1, k = j + 1로 더해주어서, 각각의 값이 for문으로 돌면서 모든 값이 더해지게 하였다. 그리고 isPrime으로 해당한 더한 값이 ..
[문제][풀이코드]function solution(k, m, score) { var answer = 0; score = score.sort((a,b) => b - a) for(let i = 1; i [해설]문제에서 물어보는 것은 사과에 들어있는 박스를 m개로 나눴을 때, 최저가격 * m개가 총합이 제일 높은 결과 값을 가져오는 것이 목표이다.그래서 우리는 우선 사과박스를 정렬해주어야한다. 내림차순으로 정렬해주어야 최대값들이 들어있는 사과부터, 최소값으로 나눠지기 때문에 내림차순으로 정렬을 해주고, 해당하는 사과를 m개로 나눠줘야하기 때문에, score.length / m 만큼 나눠준다. 이때 i 는 1로 잡아줬는데 왜냐하면 최소 1번 만큼은 돌아야하기 때문에 1
[문제][풀이코드]function solution(cards1, cards2, goal) { var answer = ''; let cardanswer = []; for(let i = 0; i [해설]우선 조건은 2가지가있다.1. 카드뭉치 두가지가 있고, 카드를 뽑는다.2. 두 카드뭉치중 첫번째 카드만 뽑을 수 있고, 뽑는 카드뭉치는 자유이다. 이것을 이용하여 목표 단어와 일치하면 Yes, 아니면 No를 출력하시오.위의 글이 해당하는 조건이다.이 조건을 이용하여 우리는 문제를 풀 것이다. 우선 goal 까지 단어를 만들어야하기 때문에 for문으로 goal의 length 길이 까지 반복문을 돌려준다. 그리고 두카드뭉치중 첫번째 카드를 뽑기 위해 cards1과 cards2중 0번째를 가..
[문제][코드]function solution(a, b) { var answer = ''; const day = ["FRI", "SAT", "SUN", "MON", "TUE", "WED", "THU"]; const dayofMonth = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; let days = 0; for(let i =0 ; i [풀이]기본적으로 2016년의 각 달을 알고 있어야 하는 문제이다.2016년의 각 달의 총 수를 dayofMonth에 배열로 저장해둔다. 1월 1일이 금요일이라면, 기본적으로 첫번째 금요일은 0, 토요일 1, ~~~ 목요일 6과 같이 할 수 있다. 우리는 이것을 보고 7로 나눴을 때 나머지 값이..
[문제][풀이]function solution(k, score) { var answer = []; for(let i= 0 ; i b - a)[i]); } else { answer.push(score.slice(0, i+ 1).sort((a, b) => b - a)[k - 1]); } } return answer;}[해설]우선 조건이 2가지가 있다.1. k 보다 작을 때k 보다 수가 작을 경우 내림 차순을 했을 때 제일 마지막 값이 최소 값, 명예의 전당에 올라가는 수이다.그렇기 때문에 우선 배열을 잘..
- 문제- 코드function solution(a, b, n) { var answer = 0; while(n >= a) { answer += Math.floor(n/a)*b n = Math.floor(n / a) * b + n % a; } return answer;}-해설우선 n을 a개로 나누는 것이 목적이기 때문에 n이 a개만큼 더 못나누는 상황 즉 n >= a 일 경우가 안될 때까지 while문으로 나누게 끔 하였다.이제 answer에는 (n / a) 한값에 * b 몇병을 추가적으로 주는지 곱해서 우선 answer에 넣어두고, n의 값은 n / a * b 에 n % a를 더해주어야한다. n % a를 하는 이유는 위의 사진을 보면 ..
문제코드function solution(numbers) { var answer = []; for(let i = 0; i a - b); return answer;}풀이우선 문제에 대한 이해를 해야한다. 우리는 모든 경우의 수의 덧셈을 우선 진행해야하기 때문에, 선택 정렬로 해결 하였다. 모든 덧셈을 하되, 겹치는 부분이 있으면 정답에 중복으로 들어가게 하면 안된다. 그래서 indexOf() 함수를 사용하였다. indexOf의 경우 배열안에 중복되는 수가 있으면 위치 값을 반환하고 없다면 -1을 반환한다. 나는 없으면 -1을 반환하는 것을 이용하여서 중복되는 수가 없을 시에만 answer에 push하게하고 모든 배열이 일을 마쳤다면 answer.sort()를 ((a,b) =>..
이즈99
'프로그래머스' 태그의 글 목록