javascript
-
[코어자바스크립트] 기본형 데이터와 참조형 데이터 / 참조형 데이터의 메모리 할당 방식[TIL] 카테고리/JavaScript 2022. 6. 15. 16:39
1-4-1 불변값 변수(variable)와 상수(constant)를 구분하는 성질은 변경 가능성이다. (바꿀수 있으면 변수, 없으면 상수) 이 때, 변경 가능성의 대상은 변수영역 메모리이다. (즉, 데이터의 주소값이 저장되는 부분이다.) 한번 데이터 할당이 이뤄진 변수공간에 다른 데이터를 재할당 할수 있다면 변수이다. 기본형 데이터인 숫자, 문자열, 불리언, null, undefined는 모두 불변값이다. 한번 데이터 영역의 어떤 주소에 값이 만들어지면, 그 값은 (가비지 컬렉팅을 당하지 않는 한)절대 변경되지 않는다. 만약 변수에서 데이터 변경이 일어난다면, 데이터 영역에 새로운 공간을 만들어 다시 연결한다. 1-4-2 가변값 참조형 데이터에는 객체의 변수(프로퍼티) 영역이 별도로 존재한다. 데이터 영..
-
[코어자바스크립트] 데이터는 어떻게 저장될까? 변수 선언과 데이터 할당[TIL] 카테고리/JavaScript 2022. 6. 15. 11:06
1-1 데이터 타입의 종류 1-2-1 메모리와 데이터 1비트 : 메모리의 가장 작은 조각. 0 또는 1. 각 비트는 고유한 식별자로 위치를 확인 할 수 있다. 1byte = 8비트 : 컴퓨터에서 사용하는 데이터의 기본 단위. 28 = 256개의 값을 표현 가능. 바이트 단위의 식별자 ( = 메모리 주솟값, memory address)를 통해 서로 구분하고 연결할 수 있다. 왜 8비트씩 묶게 되었을까? 1) 비트는 너무 작다! 비트 단위로 쪼개진 데이터를 검색해서 위치를 확인하는 것은 비효율적이다. 2) 비트를 묶어줌으로 인해 메모리 검색 시간을 줄일 수 있고, 표현할 수 있는 데이터의 개수도 늘릴 수 있다. 3) 그러나 너무 큰 단위로 묶게 되면, 불필요하게 남는 빈 공간 (= 낭비되는 비트)가 생겨나게..
-
[자바스크립트] 프로그래머스 Lv.1 신고 결과 받기[TIL] 카테고리/알고리즘 문제풀기 2022. 6. 3. 11:39
Lv.1 의 마지막 문제!! 내일은 Lv.2를 도전해볼까 백준으로 갈까.. 고민된다 ㅋㅋ... 점점 더 어려운걸 도전하는게 맞는거 같기도 하고, 아직 Lv.1 도 좀 어려운게 있는데 + 효율적인 코드로 못 푸는데..? ㅋㅋㅋㅋ 내일 한번 도전해보고 생각해야겠다! let reported_by = id_list.map((id) => []) let answer = id_list.map((id) => 0) report = report.map((r) => r.split(' ')).forEach((r, i) => { if (! reported_by[id_list.indexOf(r[1])].includes(r[0])) { reported_by[id_list.indexOf(r[1])].push(r[0])} }) rep..
-
[자바스크립트] 프로그래머스 Lv.1 [카카오 인턴] 키패드 누르기카테고리 없음 2022. 6. 2. 23:59
let num_pad = [[1, 4, 7, '*'], [2, 5, 8, 0], [3, 6, 9, '#']] let l_now = [ 0,3 ] let r_now = [ 2,3 ] hand = hand === "left" ? 'L' : 'R' for (n of numbers) { if ( num_pad[0].includes(n) ) { answer.push('L') l_now = [ 0, num_pad[0].indexOf(n) ] } else if ( num_pad[2].includes(n) ) { answer.push('R') r_now = [ 2, num_pad[2].indexOf(n) ] } else { let n_now = [] num_pad.forEach((column,i) => { if (co..
-
[자바스크립트] 프로그래머스 Lv.1 크레인 인형뽑기 게임[TIL] 카테고리/알고리즘 문제풀기 2022. 6. 1. 22:20
이건 이전 문제보다는 비교적 수월하게? 풀었다. let basket = [] moves.forEach((t) => { for (rows of board) { if (rows[t-1] !== 0) { basket.push(rows[t-1]) rows[t-1] = 0 break } } }) while (basket.some((d,i) => d === basket[i+1])) { basket.forEach((d,i) => { if (d === basket[i+1]) { basket.splice(i, 2) answer += 2 } } ) } 우선 바구니 배열을 만들어서, 뽑은 인형들을 차례로 담아주고, 인형끼리 붙은 경우 answer의 카운트를 올리고 바구니에서 빼주는 걸로! https://programmers..
-
[자바스크립트] 프로그래머스 Lv.1 [1차]다트게임[TIL] 카테고리/알고리즘 문제풀기 2022. 6. 1. 22:20
....! 어렵지 않게 풀 줄 알았는데 처음 짠 로직에 생각보다 예외 케이스가 너무 많았던 것이었다...! (일단 숫자 10(...), 첫번째 Score가 스타상일때, 스타상 옵션이 중첩될때...) 결국 이것저것 조건을 덧붙이다보니 괴상한 녀석이 탄생했다. 으... 지저분해.... let answer = dartResult.split('').map((s,i) => s === 'S' ? dartResult[i-1] === '0' && dartResult[i-2] === '1' ? 10 : dartResult[i-1]**1 : s === 'D' ? dartResult[i-1] === '0' && dartResult[i-2] === '1' ? 100 : dartResult[i-1]**2 : s === 'T' ..
-
[자바스크립트] 프로그래머스 Lv.1 [1차] 보물지도[TIL] 카테고리/알고리즘 문제풀기 2022. 5. 31. 03:59
let answer = [] let rowLength = Math.max(...arr1,...arr2).toString(2).split('').length arr1 = arr1.map((rows) => rows.toString(2).split('')) arr2 = arr2.map((rows) => rows.toString(2).split('')) for (i=0; i { blocks = blocks*1 + arr2[i][j]*1; return blocks > 0 ? '#' : ' ' } ).join('')) } 1) 보물지도의 폭(↔)기준을 먼저 잡았다 -> 맨앞이 0 이면 자릿수가 사라지는 문제때문 2) arr1과 arr2에 담긴 숫자를 각각 2진수로 변환 후 한 글자씩 쪼갠 배열로 만들어주었다. 3)..
-
[자바스크립트] 프로그래머스 Lv.1 폰켓몬[TIL] 카테고리/알고리즘 문제풀기 2022. 5. 30. 02:00
엣 ㅠㅠ 예쁘고 쉽게 잘 풀었다고 생각했는데, 1점 받았다.... 슬퍼.... 느린가..? 다른 사람들이 많이 풀어서 그런가..? const pTypes = new Set(nums) answer = nums.length/2 < pTypes.size ? nums.length/2 : pTypes.size 그래도 문제풀이에 처음으로 Set 사용해봤단거에.. 만족을.. 해보자... 점점 for 과 if 말고 다른 문법들도 사용하기 시작한거니까... 응...ㅠ +) 다른사람들이 푼 것을 보고, pTypes를 그냥 Set으로 말고 [...new Set(nums)] 로 하고 .length로 써봤다. 아주아주아주 찔끔.. 더 빠르다... 아마 Set의 size를 재는 과정이 일반 배열.length 보다 무거운가보다....