문제 설명 핵심 1. 팀 구성에 대한 모든 경우의 수를 구하기 2. 각 팀에서 얻을 수 있는 모든 능력치의 합을 구하기 문제 풀이 const readline = require('readline'); const rl = readline.createInterface({ inp..
문제 설명 https://www.acmicpc.net/problem/1759 1759번: 암호 만들기 첫째 줄에 두 정수 L, C가 주어진다. (3 ≤ L ≤ C ≤ 15) 다음 줄에는 C개의 문자들이 공백으로 구분되어 주어진다. 주어지는 문자들은 알..
문제 설명 https://www.acmicpc.net/problem/9095 9095번: 1, 2, 3 더하기 각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력한다. www.acmicpc.net 문제 풀이 const readline = require('re..
문제 설명 https://www.acmicpc.net/problem/10971 10971번: 외판원 순회 2 첫째 줄에 도시의 수 N이 주어진다. (2 ≤ N ≤ 10) 다음 N개의 줄에는 비용 행렬이 주어진다. 각 행렬의 성분은 1,000,000 이하의 양의..
문제 설명 문제 풀이 const readline = require('readline'); const rl = readline.createInterface({ input: process.stdin, output: process.stdout, }); let input = []; let n = 0; let count = 0; rl.on('li..
Model 컨트롤러가 호출 시 요청에 맞는 역할을 수행 비즈니스로직의 구현영역 *비즈니스 로직 : 업무에 필요한 데이터를 처리하는 응용프로그램의 일부 상태가 변하면 컨트롤러와 뷰에 다음 명령을 요청한다. View..
Test Driven Development 테스트가 주도하는 코드 작성 방식 자동화된 테스트케이스를 생성하고 그 테스트를 통과하는 코드를 작성한다. 기능을 추가하기 전에 테스트를 작성한다 장점 1. 테스..
문제 설명 문제 풀이 const readline = require('readline'); const rl = readline.createInterface({ input: process.stdin, output: process.stdout, }); let input = []; let count = 0; let expression = '';..
Representational State Transfer 디자인패턴X vs 아키텍쳐O 아키텍쳐란? 최적화를 위하여 시스템을 설계하는 설계도 Rest의 특징 1. 유니폼 인터페이스 통일된 인터페이스로 실행되는 아키텍쳐 스타일..
인간 중심적 프로그래밍 (Object Oriented Programming) 현실의 객체에서 특징들을 뽑아와서 프로그래밍하는것 ⇒ 추상화 코드의 재사용성이 높고 잘만들어 놓으면 버그의 발생률이 줄어든다 객체간에 메세지 교환..
문제 설명 2559번: 수열 첫째 줄에는 두 개의 정수 N과 K가 한 개의 공백을 사이에 두고 순서대로 주어진다. 첫 번째 정수 N은 온도를 측정한 전체 날짜의 수이다. N은 2 이상 100,000 이하이다. 두 번째 정수 K는..
문제 설명 3273번: 두 수의 합 n개의 서로 다른 양의 정수 a1, a2, ..., an으로 이루어진 수열이 있다. ai의 값은 1보다 크거나 같고, 1000000보다 작거나 같은 자연수이다. 자연수 x가 주어졌을 때, ai + aj = x..
문제 설명 11728번: 배열 합치기 첫째 줄에 배열 A의 크기 N, 배열 B의 크기 M이 주어진다. (1 ≤ N, M ≤ 1,000,000) 둘째 줄에는 배열 A의 내용이, 셋째 줄에는 배열 B의 내용이 주어진다. 배열에 들어있는 수는..
왜 사용하는가? 코드의 효율성 판별 수동적인 시간측정의 문제 해결 어떻게 사용하는가? 완벽한 시간을 구하는게 아님 ⇒ 연산의 갯수를 구하여 전체적인 추세를 파악하기 위함 1. 시간복잡도 종류: O(1) : 값이변..
문제 설명 s를 나눠서 단어로 만들어주고 -> 단어를 나눠서 첫번째 요소를 대문자로 바꿔준다. 첫 문자가 숫자일 때와 공백일때를 대비해준다. 문제 풀이 function solution(s) { const splited = s.toLowerCase(..
문제 설명 다리에서 들어오고 나갈때 카운트 해야함 다리의 배열 요소의 합 + 현재 대기 트럭무게의 합이 weight를 넘어서면 안됨 문제 풀이 function solution(bridge_length, weight, truck_weights) { const b..
문제 설명 합쳐서 비교하기 위해 문자열로 바꿔서 정렬해주고 sort함수를 이용하여 비교 배열 요소 모두 0일때는 가장 큰 수는 0 이므로 0리턴 문제 풀이 function solution(numbers) { let answer = numbers.map..
문제 설명 순서 비교를 위하여 초기위치를 키값으로 배정한다. 배열의 가장 앞 요소와 나머지 요소들을 비교하여 큰 값이 존재한다면 배열의 맨뒤로 보내고 자신이 가장 크다면 printed 카운트(프린트 된 순서)를..
문제 설명 dfs개념 활용 dfs = 깊이우선탐색 하나의 노드를 다 돈 후에 마지막에 실행된 스택을 지우고 인접한 상위 노드를 방문한다. 이 문제의 예로 보자면 +를 다돈 후 +트리의 마지막 부터 -로 갈라짐 또 -..
문제 설명 skill을 포함하는 것만 남기고 Index로 비교 문제 풀이 const isSorted = arr => { for(let i =0; i < arr.length; i++) if(arr[i] !== i) return false return true } function solution(skill, skill..
문제 설명 문제 풀이 function solution(progresses, speeds) { const answer = [] const rest = progresses.map((e,i)=>{ return Math.ceil((100-e)/speeds[i]) }) let maxRest = rest[0] let count = 1 for(let..
1. 오류 경계란? - 오류가 일어났을 때 웹사이트를 중지시키지 않고 에러관리를 할 수 있도록함. - 기본 자바스크립트 try and catch와 유사함 - 일종의 컴포넌트 - 함수형 컴포넌트에서는 이용이 불가하..
문제 설명 // 신고횟수 제한 X // 동일유저신고 1회로 // k번신고되면 정지 // 취합후 마지막에 한꺼번에 정지 // 정지메일 발송횟수 리턴 문제 풀이 function solution(id_list, reports, k) { const r..
문제 설명 0은 어떤 수가 될 수 있다. 문제 풀이 function solution(lottos, win_nums) { let win = [] let answer = [] for(let i =0; i e===0) const maxWins = win.length+zeroNum.length if(win.length ===..
문제 설명 문제 풀이 function solution(new_id) { const lowCase = new_id.toLowerCase().split('') const arr = lowCase.filter(e=> /[0-9]/.test(e) || /[a-z]/.test(e) || e==='-' || e==='_' || e==='.') co..
문제 설명 문제 풀이 function solution(board, moves) { let basket = [] let answer = 0 for(let e of moves) { for(let i =0; i < board.length; i++) { let item = board[i][e-1] if(item === 0) continue;..
1. BEM이란? Block-Element-Modifier의 구조로 class를 지정하는 것 선택자 특이성을 낮게 유지 직관적으로 CSS의 구조를 파악가능 2. 사용 방법 (1). 기본형식 .block__element--modifier {} (2). element 다..
문제 설명 문제 풀이 function isPrime(sum) { for(let i = 2; i < sum; i++) if(sum % i === 0) return false; return sum > 1; } function solution(nums) { let answer = 0 for(let i =0; i < nums.length; i+..
문제 설명 문제 풀이 function fillZero (arr,length) { arr.map((e,i) => { if(arr[i].length < length) { while(arr[i].length < length) { arr[i] = '0' + arr[i] } } }) } function solution(n, arr1, arr2)..
문제 설명 문제 풀이 function solution(dartResult) { let answer = [] let score = 0 for(let i=0;i = 0) { if(dartResult[i] == 1 && dartResult[i+1] == 0) { score = 10 i++ } else { score = dartResult[i]..
문제 설명 문제 풀이 function solution(N, stages) { let userNum = stages.length let answer = [] for(let i = 1; i <= N; i++ ) { let userInOneStage = stages.filter((e)=>e===i).length let value = userI..
1. useReducer란? -useState로는 관리하기 힘든 방대한 state를 관리할 수 있다. 2. 사용이유? -효율적인 state의 관리 but 항상 좋은건 아니다. 과할 수 있다. -여러개의 state를 하나의 객체 안에서 관리..
문제 설명 문제 풀이 function solution(a, b) { let answer = 0 // a와 b의 같은 순서의 요소를 서로 곱함 => a 배열의 길이만큼 반복 for(let i = 0; i < a.length; i++) { answer += a[i]*b[i] } return answe..
1. useEffect 란? - react의 주요 임무는 화면을 렌더링하고 컴포넌트를 재사용 하는 것 - effect는 side effect라고도 하는데 주요 임무 외에 처리하는 모든 것을 뜻함 ex) Http 리퀘스트 - 특정 값이 변하..
1. Ref란? - 영어 Reference(참조)의 축약형으로 다른 DOM에 접근 가능하게 해준다. - 그 값은 Object이고 오브젝트 안에는 current가 존재하고 그 안에 값이 존재한다. 2. 사용이유? - useState와 비슷한..
1. Portal 이란? - 컴포넌트를 원하는 위치에 렌더링 할 수 있다. ex) root의 바깥쪽 2. 사용이유? - 독립적인 위치에서 관리가능 (그러나 원래의 react의 기능 그대로 사용 가능) - modal 또는 sideBar 등..
문제 설명 문제 풀이 function solution(numbers, hand) { // 배열에 값을 부여 const list ={ 1:[0,0], 2:[0,1], 3:[0,2],4:[1,0],5:[1,1],6:[1,2],7:[2,0], 8:[2,1],9:[2,2],'*':[3,0],0:[3,1],'#':[3,2]} let..
문제 설명 문제 풀이 function solution(sizes) { const rotated = sizes.map(([w,h])=> w > h ? [w,h] : [h,w]) let wArr = [] let hArr = [] rotated.map(([w,h]) => { wArr.push(w) hArr.push(h) }) return Ma..
문제 설명 문제 풀이 function solution(nums) { const set = new Set(nums) const arraySet = [...set] if(arraySet.length > nums.length/2 ) { return nums.length/2 } else { return arraySet.length } } 1...
문제 설명 문제 풀이 function solution(n, lost, reserve) { const students = new Array(n).fill(1) lost.map(l => students[l-1]--) reserve.map(r => students[r-1]++) students.map((_,i)=> { if(students[i..
문제 설명 문제 풀이 function solution(answers) { const one = [1,2,3,4,5] const two = [2,1,2,3,2,4,2,5] const thr = [3,3,1,1,2,2,4,4,5,5] let arr1 = [] let arr2 = [] let arr3 = [] answers.map((e,i)..
문제 설명 문제 풀이 function solution(s) { const arr = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"]; let answer = [] let word = "" const splited = s.split("") sp..
문제 설명 문제 풀이 function solution(n) { const ternary = n.toString(3) return parseInt(ternary.split("").reverse().join(""),3) } 1. toString으로 3진법화 2. 배열로 나눠주고 reverse 3. join으로 합..
문제 설명 문제 풀이 function solution(numbers) { const answer = [] for(let i =0; i < numbers.length; i++) { for(let j =1+i; j < numbers.length; j++) if(!answer.includes(numbers[i]+numbers[j])) { an..
문제 설명 문제 풀이 function solution(n, m) { const arr = [] for(let i = 1; i <= m; i++) { if(n%i===0 && m%i===0) { arr.push(i) } if(arr.length > 1) { arr.shift() } } arr.push(arr[0]*n/arr[0]*m/arr..
문제 설명 문제 풀이 function solution(absolutes, signs) { const array = absolutes.map(function(e,i) { if(!signs[i]) { return Math.abs(e)*-1 } else { return e } }) return array.reduce((p,c) => p+c)..
문제 설명 문제 풀이 function solution(left, right) { let answer = 0 for(let i = left; i <= right; i++) { let array = [] for(let j = 1; j<= i ; j++ ) { if(i % j === 0) { array.push(j) } } array.leng..
문제 설명 문제 풀이 function solution(arr){ const answer = [] for(let i = 0; i < arr.length; i++) { if(arr[i] !== arr[i+1]) { answer.push(arr[i]) } } return answer } 1. for루프로 arr 내부 요소를 앞..
문제 설명 문제 풀이 function solution(strings, n) { return strings.sort((a,b) => { if(a[n] > b[n]) return 1; if(a[n] === b[n]) { if(a>b) return 1 if(a 1. sort로 오름차순 정리 2. 값이 같은 경우에는..
문제 설명 문제 풀이 function solution(d, budget) { let count = 0 let sum = 0 d.sort((a,b) => a-b) for(let i = 0; i < d.length; i++) { count++ sum += d[i] if(sum > budget) { count-- } } return count..
문제 설명 문제 풀이 function solution(price, money, count) { const array = [] for(let i = 1; i <= count; i++) { array.push(price * i) } const arraySum = array.reduce((p,c) => p + c) return money >..
문제 설명 문제 풀이 function solution(n) { for(let i = 1; i < n; i++) { if(n%i === 1) { return i } } } 1. for 루프로 n의 수까지 나눠서 나머지가 1이되는 수 리턴 개선 사항
문제 설명 문제 풀이 function solution(arr, divisor) { const answer = [] for(let i = 0; i < arr.length; i++) { if(arr[i]%divisor===0) { answer.push(arr[i]) } } if(answer.length === 0) { answer.push(..
문제 설명 문제 풀이 function solution(s){ const arr = s.toLowerCase().split("") let answer let p = [] let y = [] for(let i = 0; i < arr.length; i++) { if(arr[i] === "p") { p.push("p") } else if (ar..
문제 설명 문제 풀이 function solution(seoul) { const index = seoul.indexOf("Kim") return `김서방은 ${index}에 있다` } 1. Kim의 위치 찾기 2. ``이용하여 리턴 개선 사항
문제 설명 문제 풀이 function solution(n) { const array = Array(n+1).fill(true).fill(false,0,2) const answer = [] for(let i = 2; i <= n; i++) { if(array[i]) { for(let j = i*i; j<= n; j+=i) { array[j..
문제 설명 문제 풀이 function solution(s, n) { const upAlphaInner = Array.from(Array(26)).map((t,i) => i + 65) const loAlphaInner = Array.from(Array(26)).map((t,i) => i + 97) const upAlphabet = upAl..
문제 설명 문제 풀이 function solution(n) { let result = 0 for(let i = 1; i <= n; i++) { if(n%i === 0) { result += i } } return result } 1. i는 나눠주는 수이므로 for루프를 이용해 최댓값n까지 반복 2...
문제 설명 문제 풀이 function solution(s) { const word = s.split(" ") const result = [] for(let i = 0; i < word.length; i++) { result.push(word[i].split("").map((t,j) => j%2 ? t.toLowerCase() : t.to..
문제 설명 문제 풀이 function solution(arr1, arr2) { let answer = [] for(let i = 0; i < arr1.length; i++) { let array = [] for(let j = 0; j < arr1[i].length ; j++ ) { array.push(arr1[i][j]+arr2[i][j..
문제 설명 문제 풀이 process.stdin.setEncoding('utf8'); process.stdin.on('data', data => { const n = data.split(" "); const a = Number(n[0]), b = Number(n[1]); const line = "*".repeat(a) for(let i =..
1. class를 사용하는 이유? - class를 사용하면 class 중괄호 속에서 일반 생성자 함수보다 더 쉽게 method 관리 가능 - class를 사용하지 않으면 일반 생성자 함수를 사용할 때 prototype안에 일일이 만든 m..
api = 다른 곳의 데이터를 구하기 위한 통로 api에 데이터 전송 => 원하는 데이터를 얻음 api는 대부분 json // 소수 XML(구식) 1. json의 형식 무조건 "" // (not '') {"asd" = "ddd"} 2. json.value의 종류 obje..
1. 들어가기 이전 - 자바스크립트는 single thread *single thread = 한번에 한줄씩 코드가 실행됨 - 컴퓨터는 stack구조로써 콜백함수를 중첩적으로 이용하면 성능이 저하되어 UX에 좋지 않다. *stack = 값의..
문제 설명 문제 풀이 function solution(x) { let arr = Array.from(`${x}`).map(Number) let total = 0 for(element of arr) { total = total += element } return x % total ? false : true } 1.from으로 배열..
문제 설명 문제 풀이 function solution(num) { let attempt = 0 while (num !== 1) { if(attempt === 500) { return -1 } num = num % 2 ? num*3+1 : num/2 attempt++ } return attempt } 1. while loop 이용하..
1. for..of의 기본형식 for (변수지정 of iterable*) { } <배열 안의 구성요소들을 변수로 선언하여 참조가능> *iterable : 한 개의 데이터가 여러가지의 구성요소를 가지는 경우 참고) for loop의 기본 형식 for..
문제 설명 문제 풀이 function solution(n){ arrayN = Array.from(`${n}`).map(Number) return arrayN.reduce((prev,curr) => prev+curr) } 1. from()으로 배열화 2. map(Number)로 숫자화 3. reduce()로 전체의..
문제 설명 문제 풀이 function solution(n) { return (Array.from(`${n}`).reverse().map(Number)) } 1. from()으로 배열화 2. reverse()로 역순 3. map(Number)로 문자화 되었던 숫자를 다시 일괄적으로 숫자로..
문제 설명 문제 풀이 function solution(n) { let sortedNum = Array.from(`${n}`).sort().reverse().join("") return parseInt(sortedNum) } 1. Array.from()으로 숫자의 배열화 // 그냥 n인자를 사용하면 ["n"]..
문제 설명 문제 풀이 function solution(n) { let testNum = Math.pow(n,0.5) return Number.isInteger(testNum) ? Math.pow(testNum+1,2) : -1 } 1. Math.pow(n,0.5) = n의 0.5 제곱를 하여 n의 제곱근 추출 2...
문제 설명 문제 풀이 function solution(x, n) { let answer = [] for(let i = 1 ; i <= n; i++) { answer.push(x*i) } return answer } 1. n = answer.length 2. x의 배수를 for 루프 이용하여 빈 배열 answer에..
문제 설명 문제 풀이 function solution(n) { return n%2 ? "수박".repeat((n-1)/2) + "수" : "수박".repeat(n/2) } 1. n%2 = 1은 True / 0은 False 2.(n-1/2) X => ((n-1)/2) O 괄호 주의 개선 사항
문제 설명 문제 풀이 function solution(arr) { let popNum = Math.min(...arr) let popNumIndex = arr.indexOf(popNum) arr.splice(popNumIndex,1) if(arr.length === 0) { return [-1] } else { return arr } }..
// splice(start,deleteCount,elementIntoArray1....) const array = ["월", "화", "수", "목", "금", "토", "일"]; const weekend = array.splice(5, 2); // weekend = 토,일 / array = 월,화,수,목,금,토 array...
문제 설명 문제 풀이 function solution(phone_number) { let hideNum = phone_number.slice(0,phone_number.length-4) let remainNum = phone_number.slice(hideNum.length) return "*".repeat(hideNum.length)..
문제 설명 문제 풀이 function solution(s) { if((s.length === 4 || s.length === 6) && s == parseInt(s)) { return true } else { return false } } parseInt("a234") = NaN 이다. 그렇기 때문에 "a234" =X Na..
'==' => type불문 동일시 true '===' => type까지 동일시 true ex) 1 == "1" //true 1 === "1" //false 0 == false //true 0 === false //false '!=' => type 불문 '!==' => type 동일 ex) 1 != "1" // false 1..
// 매서드 thing.method(arg) argument = 인수 let msg = " Hello, World"; const whisper = message.toLowerCase().trim(); // indexOf() msg = "Hello, World"; msg.indexOf("Hello"); // 0 msg.indexOf("o"); /..