2차 공부/알고리즘 34

할인 행사

function solution(want, number, discount) { var answer = 0; let wantMap = new Map() for(let i = 0; i { if (value코드를 작성하고 문제를 다시 읽어보니 당연히 틀린것이라고 생각이 들었다.그 이유는 연속적으로 원하는 물건이 들어오는지는 확인을 하지만, 해당 연속에서 원하는 물건의 개수가 맞춰질수있는지에 대한 예외처리가 없기때문이다.또한, 알맞은 순서와 알맞은 순서 사이 틀린 값이 들어올 때도 고려하여 모든 discount배열을 돌아야 하는데 해당 부분도 부족한 것 같다. function solution(want, number, discount) { var answer = 0; for..

n^2 배열 자르기

프로그래머스 - n^2 배열 자르기  먼저 작성한 코드function solution(n, left, right) { var answer = []; let answerStr = '' for (let i = 1; i Number(el));}// i일 때 i를 i개만큼 넣고, n까지 1씩 더하며 추가// [1 2 3 4]// [2 2 3 4]// [3 3 3 4]// [4 4 4 4]만드려는 배열을 문자열로 만들고 한 문자열에 모두 저장한 다음, left와 right에 맞춰 자르고, 배열화시킨 뒤 모든 요소를 숫자화 시키는 방식으로 풀이했다.테스트코드는 모두 성공했으나, 데이터가 매우 크게 들어올 수 있는 점을 생각하지 않아 시간초과로 실패하였다. 두번째로 작성한 코드function ..

괄호 회전하기

프로그래머스 - 괄호 회전하기  먼저 작성한 코드function solution(s) { var answer = 0; let closerObj = { '[' : ']', '{' : '}', '(': ')' } for (let i=0; i { if (closerMap[key] !== 0) { flag = false } }) if (flag) {answer++}; } return answer;}반복에따라 회전한 문자열 targetStr의 한 단어마다 어떤 괄호인지 검사하여 closerMap의 해당 괄호의 닫는괄호에 닫아야하는 개수를 더하거나 뺀다.만약 타겟단어가 닫는괄호인데, 객체에서..

이진 변환 반복하기

프로그래머스 - 이진 변환 반복하기 작성한 코드function solution(s) { let binaryNum = 0; let zeros = 0; let sLength; while (s.length > 1) { sLength = s.length; s = s.split('0').join('') binaryNum++ zeros += (sLength - s.length) s = s.length.toString(2) } return [binaryNum, zeros]}이진법 변환 횟수인 binaryNum과 없앤 0의 개수인 zeros 변수를 만든다.s.length가 1이 될때까지 반복하는데먼저 s에 0을 제거해주고 변..

JadenCase 문자열 만들기

프로그래머스 - JadenCase 문자열 만들기 처음 작성한 코드function solution(s) { var answer = ''; let sSplit = s.split(' ') for (let i = 0; i 들어온 문자열을 띄어쓰기 기준으로 나눠주고나눠진 단어를 알파벳별로 나누어 첫 글자만 대문자로, 나머지는 소문자로 만들어 answer에 그대로 넣는 방식이다.그리고 마지막에 띄어쓰기가 더해져 trim으로 제거하였다.8번 케이스가 실패했다.아마도 띄어쓰기가 문제인것으로 생각된다.띄어쓰기가 연속해서 나오게 되면 split할 때에 빈 문자열이 sSplit배열에 들어가기 때문이라고 생각하며, s로 들어온 문자열 중 단어의 맨 앞만 대문자, 나머지 단어는 소문자로 바꿔야한다.예를 들어 '..

최댓값과 최소값

프로그래머스 - 최댓값과 최소값띄어쓰기로 각 숫자를 구분한 문자열이 들어올 때 해당 문자열에서 최댓값과 최소값을 리턴하는 문제이다. 먼저 작성한 코드function solution(s) { let numArr = s.split(' ').sort((a,b) => a-b) let positiveNum = [] let negativeNum = [] numArr.map((num) => Number(num)>0 ? positiveNum.push(Number(num)) : negativeNum.push(Number(num)) ) if (positiveNum.length === 0) { return [negativeNum[0], negativeNum[negativeNum.len..

신고 결과 받기

프로그래머스 - 신고 결과 받기id순서배열과 신고내역 배열, 정지기준이 인자로 들어오고, 피신고인의 피신고량이 정지기준을 넘기면 신고자에게 신고결과메일을 발송한다.이때 모든 id_list에 대한 신고결과메일 발송량을 리턴하면 된다. function solution(id_list, report, k) { var answer = []; //누가 누구들을 신고했는지에 대한 배열 let reportArr = {} //누가 누구들에게 의해서 신고당했는지에 대한 배열 let reportedArr = {} //각 id마다 신고, 피신고 배열을 만들어 객체에 넣어줌 id_list.forEach((id) => { reportArr[id] = [] report..