본문 바로가기

전체 글178

2차배열에서 한 값을 변경할때 전체 줄이 바뀌는 문제 해결법 2차배열을 생성할때 이렇게 생성하고 한 값을 변경했는데 내가 바꾸지도 않은 전체 줄의 값이 바꼈다 const newArr = new Array(len).fill(new Array(len).fill(null)); newArr[0][0] = 5; console.log(newArr) 출력값 [ [ 5, 0, 0, 0, 0 ], [ 5, 0, 0, 0, 0 ], [ 5, 0, 0, 0, 0 ], [ 5, 0, 0, 0, 0 ], [ 5, 0, 0, 0, 0 ] ] 내가 예상한 값은 [0][0]만 5로 변하는 건데 전체 행 줄의 값이 바꼈다. 문제의 이유를 찾아보니 각 행이 실제로 메모리에 있는 하나의 리스트를 가리키는 참조(reference)로 구현되어 있기 때문에 발생 해결법 해당 행을 수정하기 전에 해당 행.. 2023. 7. 29.
[프로그래머스] 한 번만 등장한 문자 https://school.programmers.co.kr/learn/courses/30/lessons/120896 방법1 문자열.lastIndexOf() function solution(s) { const arr = []; for (const c of s) { if (s.indexOf(c) === s.lastIndexOf(c)) { arr.push(c); } } return arr.sort().join(''); } 방법2 function solution(s) { var answer = ''; const obj = {}; for (const element of s) { obj[element] = (obj[element] || 0) +1; } // 1번만 등장하는 문자만 솎아내기 const once = O.. 2023. 7. 27.
[프로그래머스] 귤 고르기 https://school.programmers.co.kr/learn/courses/30/lessons/138476 리턴 값: k개씩 담을때 최소한 종류의 갯수 첫번째 풀이 function solution(k, tangerine) { var answer = 0; const obj = {}; let count = 0; for (const size of tangerine) { obj[size] = (obj[size] || 0) + 1; } // sort const sorted = Object.entries(obj).sort((a, b) => b[1] - a[1]); while (count < k) { count += sorted.shift()[1]; answer++; } return answer; } // .. 2023. 7. 18.
[프로그래머스] 숫자의 표현 https://school.programmers.co.kr/learn/courses/30/lessons/12924 첫 풀이 처음부터 하나씩 더해가며 합이 n이 되면 answer++ function solution(n) { var answer = 1; for (let i = 1; i n) { break; } } } return answer; } ➡ 정확성은 맞았지만 시간초과가 났다 첫번째 숫자 이후의 숫자는 Math.floor(n/2)+1이상일 수 없다 function solution(n) { var answer = 1; const half = Math.floor(n/2); for (let i = 1; i 2023. 7. 17.
[프로그래머스] 예상대진표 https://school.programmers.co.kr/learn/courses/30/lessons/12985 △△ 게임대회가 개최되었습니다. 이 대회는 N명이 참가하고, 토너먼트 형식으로 진행됩니다. N명의 참가자는 각각 1부터 N번을 차례대로 배정받습니다. 그리고, 1번↔2번, 3번↔4번, ... , N-1번↔N번의 참가자끼리 게임을 진행합니다. 각 게임에서 이긴 사람은 다음 라운드에 진출할 수 있습니다. 이때, 다음 라운드에 진출할 참가자의 번호는 다시 1번부터 N/2번을 차례대로 배정받습니다. 만약 1번↔2번 끼리 겨루는 게임에서 2번이 승리했다면 다음 라운드에서 1번을 부여받고, 3번↔4번에서 겨루는 게임에서 3번이 승리했다면 다음 라운드에서 2번을 부여받게 됩니다. 게임은 최종 한 명이 남.. 2023. 7. 13.
[프로그래머스] 이진 변환 반복하기 https://school.programmers.co.kr/learn/courses/30/lessons/70129 1. 0제거 2. 0을 제거한 수 의 1의 갯수의 이진수 3. return [변화 횟수, 변화 과정 중 0의 총 갯수] function solution(s) { var answer = []; let changeCount = 0; let zeroCount = 0; // s가 "1"이 될 때까지 while(s.length > 1) { let zeros = 0; zeros += [...s].filter(e => e === '0').length; zeroCount += zeros const removedZeroLength = s.length - zeros; s = removedZeroLength.t.. 2023. 7. 13.