본문 바로가기

T.I.L

(28)
23-05-25 T.I.L 비동기 작업의 동기적 표현 Promise + Async/await 로직 해석(콜백함수) 문제 설명 비동기 작업이란 순서가 보장되어 있지 않은 함수를 의미한다. 실행 중인 함수의 완료 여부와는 관계 없이 다음 코드로 넘어가는 방식이다. 동기는 실행 중인 함수가 완료가 되어야 다음 코드로 넘어간다. Proimse는 비동기 함수를 동기적인 방식으로 만드는 함수다. Promise의 콜백함수 내부에 resolve(함수를 호출하는 구문)가 있을 경우 resolve가 실행되기 전까지 다음으로 넘어가지 않는다. Async/await 는 비동기 작업을 동기적으로 표현할 수 있는 수단 중 하나이다. 하지만 Async/await의 로직이 어떤 식으로 작용이 되는지 이해가 잘 가지 않는다. 시도 var addCoffee = function (name) { return new Promise(function (re..
23-05-24 T.I.L 깊은 복사 알고리즘 문제 설명 얕은 복사와 깊은 복사를 공부하고 있었다. 얕은 복사가 어떤 방식으로 객체를 카피 하는지 이해했고 이를 방지하기 위해서 깊은 복사로 불리는 함수를 이용해야 한다는 것도 이해했다. var copyObjectDeep = function(target) { var result = {}; if (typeof target === 'object' && target !== null) { for (var prop in target) { result[prop] = copyObjectDeep(target[prop]); } } else { result = target; } return result; } 위의 함수가 깊은 복사 함수의 알고리즘이다. 이 알고리즘이 어떻게 깊은 복사를 이뤄내는지 감이 잡히지 않았다. 시..
23-05-23 T.I.L 문자열 내 마음대로 정렬하기 (programmers) 문제 설명 문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 ["sun", "bed", "car"]이고 n이 1이면 각 단어의 인덱스 1의 문자 "u", "e", "a"로 strings를 정렬합니다. 시도 문자열에도 idex번호가 있기 때문에 string[i][n]으로 비교해야하는 문자를 추출할 수 있었다. for (let i = 0; i str[i++][n]) { arr.unshift(str[i]); } else if(str[i][n] === str[i++][n]){ if (str[i] > str[i++]) { arr.unsh..
23-05-23 T.I.L 문자열 내 개수 비교 (programmers) 문제 설명 대문자와 소문자가 섞여있는 문자열 s가 주어집니다. s에 'p'의 개수와 'y'의 개수를 비교해 같으면 True, 다르면 False를 return 하는 solution를 완성하세요. 'p', 'y' 모두 하나도 없는 경우는 항상 True를 리턴합니다. 단, 개수를 비교할 때 대문자와 소문자는 구별하지 않습니다. 예를 들어 s가 "pPoooyY"면 true를 return하고 "Pyy"라면 false를 return합니다. 시도 문자열에 인덱스 번호를 지정하기 위해서 split(' ')으로 모든 문자를 한 칸씩 띄어 놓았다. p,P,o,o,o,y,Y 이런 방식으로, 그 다음에 대문자와 소문자를 구별하지 않는다고 했다. 그래서 모든 문자를 대문자로 만들거나 소문자로 만들면 구하기 편하겠다고 생각했다...