목록개발공부 (70)
코딩쌀롱

릴레이(Relay) 전류의 유무에 따라 회로를 여닫는 장치, ✱작동 원리: 전자기력을 이용해 기계적으로 스위치를 작동 1. 제어선(control wire)이 회로가 닫힐지 열릴지 결정 2. 제어선(control wire)은 안쪽의 내부 코일선과 연결 3. 전류가 코일로 흐를 때 전자기장 발생 > 금속을 당겨 회로가 닫힘 ✱한계: 전환 속도가 매우 느리고 기계식이라 마모된다는 것 ✱추가 내용 - 1940년대의 성능이 좋은 계전기는 1초에 50번 정도 왔다갔다 할 수 있었음. - Havard Mark 1은 약 3500개의 릴레이를 가지고 있었음 릴레이의 고장이 생길 때마다 문제 발생. 진공관(Vacuum tube) ✱작동 원리: 열 이온 밸브(Thermionic valve): 최초의 진공관. 밀폐된 유리 전..

이해 못한 문제 let funcArr = []; for(let i = 0; i console.log(c) ); } funcArr.forEach( fn => fn() ) 출력 결과를 예상해보자. 반복문이 모두 돌면 var가 함수 레벨 스코프이기 때문에 c = 8이 된다. 그리고 funcArr에는 함수 다섯 개가 들어가 있다. forEach로 funcArr에 있는 함수를 모두 실행시키면 console.log(c)를 다섯 번 실행한다. c의 값은 var로 전역변수로 선언돼있고, 마지막 값인 8이다. 따라서 8 8 8 8 8이 출력된다. 위의 예시에서 var를 let으로만 바꿨다. 출력 결과를 예상해보자. let funcArr =..

문제 프로그래머스 12981 영어 끝말잇기 문제 게임을 하는 사람 수 n, 순서대로 말한 단어들을 넣은 배열 words를 매개변수로 받는다. 단어의 첫 글자를 맞게 말했는지, 앞에 이미 나온 단어인지를 확인하고 틀린 사람의 번호와 몇 번째 차례일 때 그 단어를 이야기 했는지를 반환한다.[사람 번호, 차례] 아무도 틀리지 않았다면 [0, 0]을 반환한다. 나의 풀이 data = [ [ 사람1 ], [ 사람2 ], ...[ 사람n ] ] 2차원 배열로 만들어서 words의 단어들을 차례대로 사람들의 배열에 넣어가면서 체크. 1. 사람 수(n)만큼 data에 속배열을 만든다. 2. 속배열에 돌아가면서 단어 넣기 2-1 앞글자를 맞게 했는지 체크 (전 배열의 마지막 글자, 제일 앞 글자 비교) 2-2 이전에 안..

문제 발생 [프로그래머스 소수만들기 문제] 얕은 복사를 한 arr에 push로 값을 넣고, 결과값(배열)을 newArr에 할당하려고 했다. 당연히 push()의 반환값이 실행 후 바뀐 배열일 거라고 생각하고.... 문제 원인 push() 메서드의 반환값은 바뀐 배열의 길이다!! 그래서 console.log(newArr)를 했을 때 type이 number인 2가 반환됐던 것. 그와중에 나는 하필 숫자 2를 push를 해서 newArr값(길이)인 2랑 무슨 연관이 있는 줄 알았는데.. 하필 문자열도 해본다는 것을 '2'라고 했다😅 마찬가지로 unshift() 메서드도 바뀐 배열의 길이를 반환한다. shift(), pop()은 제거한 원소를 반환한다. 해결 방법 위 사진의 마지막 예시처럼 push의 반환값을 ..

문제 발생 [코드스쿼드 마스터즈 문제 - 3단계. 루빅스 큐브 구현] 큐브의 완전한 면을 3x3의 2차원 배열로 먼저 만들기 위해 arr1의 방식으로 6면을 만들었다. 그리고 큐브를 돌린 후 결과값을 다시 넣어줄 때 forEach 반복문을 돌리는데.. 문제가 발생했다. 3x3배열에서 오른쪽 열 값들을 바꾸기 위해 위의 forEach식을 사용했다.(오른쪽열이건 왼쪽열이건 똑같은 문제 발생함) 내가 예상했던 실행 과정 forEach 1번째 실행 [['O', 'O', 1], ['O', 'O', 'O'], ['O', 'O', 'O']] forEach 2번째 실행 [['O', 'O', 1], ['O', 'O', 2], ['O', 'O', 'O']] forEach 3번째 실행 [['O', 'O', 1], ['O',..

문제 프로그래머스 62048 멀쩡한 사각형 문제 가로(w), 세로(h)의 사각형에 1, 1격자가 그려져있다. 이 직사각형에 대각선을 그었을 때 대각선이 지나가지 않는 격자칸의 개수를 구하는 문제 시도했지만 실패 // 정사각형이면 w * w - w; // 직사각형이면 w * h - (작은변 x 기울기올림) function solution(w, h) { var answer = 1; if(w === h) answer = (w * w) - w; else { const gradient = h / w < 1 ? w / h : h / w; const smaller = w < h ? w : h; const num = Math.ceil(gradient); answer = w * h - (smaller * num); } ..
📌 배열에서 최소값 찾기 ✱하고 싶었던 것 // 5의 배수를 배열에 담아서 사용 const multipleOfFive = []; for (let i = 40; i el > grade); } 다음 방법으로는 find()메서드를 사용했다. 이렇게 하면 multipleOfFive 배열의 원소 중 콜백함수를 만족하는 첫 번째 요소를 반환한다. grade보다 커야한다는 조건을 콜백에 쓰고, 최소값인 조건은 multipleOfFive 배열의 원소가 오름차순으로 정렬되어 있기 때문에 첫 번째 원소가 최소값일 수밖에 없다. + find() 메서드 구문 arr.find(callback(el, idx, arr), thisArg); // idx, arr, thisArg는 optional 📌 문자열 자르기 ✱하고 싶었던 것 ..
📌 배열의 중복 원소 제거 Set reduce() reduce(), indexOf() filter(), indexOf() const arr = [2, 1, 5, 1, 6, 5, 2, 3]; // 1. Set // Set을 사용하면 유니크한 Set객체를 반환. // Set 객체를 다시 Array.form으로 배열로 변경 const set = Array.from(new Set(arr)); // 2. reduce // Array.includes(value): value가 Array에 존재하는지 판단해 true,false 반환 arr.reduce((acc, curr) => acc.includes(curr) ? acc : [...acc,curr], []); // ES6을 사용 못 할 때 // 1. reduce, ..
pr64061(doll_game).js (프로그래머스 64061문제 - 다른 풀이) 함수가 어떻게 실행되는지 이해하기 위해서 reduce, map 메서드, spread 연산자 학습. const transpose = matrix => matrix.reduce( (result, row) => row.map((_, i) => [...(result[i] || []), row[i]]), [] ); 📌 reduce() 두 번째 매개변수인 initialValue를 통해서 반환 값을 자유롭게 지정할 수 있다. (여러 자료형 가능) map, filter, find 함수로 구현할 수 있는 기능은 모두 reduce로도 가능하다. ✱ 매개변수 // initialValue는 optional arr.reduce(callback(..
✏️비동기(Asynchronous) 📌 예시 이해하기 ✱1번 function test() { let result = null; fetch('https://jsonplaceholder.typicode.com/todos/1') .then(response => response.json()) .then(json => result = json) return result; } test(); // null 서버와 통신(fetch)하는 일은 브라우저가 하는 일이니까 브라우저에게 보내고 다음 코드를 실행. 그래서 result에 원래 담겨져있던 null 반환. function test() { fetch('https://jsonplaceholder.typicode.com/todos/1') .then(response => r..