본문 바로가기
728x90
728x90

분류 전체보기191

4-1 자릿수의 합 배열에 숫자들이 담겨서 입력되면, 숫자들의 각 자릿수를 더한 값이 가장 큰 값을 출력한다. 근데 자릿수를 더한 값이 같은 숫자의 경우는 배열에 담겨서 입력된 숫자가 큰 값이 출력된다. const arr = [128, 460, 603, 40, 521, 137, 123, 11261]; 예제없이 보면 문제가 조금 애매한거 같은데 예제를 보면 쉽다. 128의 자릿수의 합은 11 그다음은 10, 9 ,4,8,11,6,11 이다. 가장 큰 합이 11 인데 11이 3개다 이런 경우에는 128, 137, 11261을 비교해서 가장 큰 수를 출력한다. 그러니 출력되는 값은 11261이다. function solution(arr) { let answer = 0; const sums = []; let biggest = 0;.. 2021. 12. 14.
격자판 최대합 문제설명 N*N크기의 표가 숫자로 채워져있다. 각 행의 합 각 열의 합 좌상우하 대각선 합 우상좌하 대각선 합 중 가장 큰 합을 구하라. 10 13 10 12 15 12 30 30 23 11 11 25 50 53 15 19 27 29 37 27 19 13 30 13 19 접근방법 다행히 2차배열로 만들어서 입력해주더라.. 배열 부터 만들었으면 귀찮았을거 같다. 좋은 방법이 있을까 고민을 해봤는데, 그냥 각 행의 합, 각 열의 합, 대각선 합 두개 총 12개의 숫자 다 한 배열에 때려 넣고 Math.max 돌리면 되는 거 아닌가.. function getBiggestSum(arr) { //모든 합이 들어가는 배열 const sum = []; //가로열 합 for (let i = 0; i < arr.leng.. 2021. 12. 10.
call, apply, bind 삼총사 처음 나왔을 때 개념을 확실히 못잡은 채로 내비뒀더니 얘네가 나올때마다 '뭐더라..' 하면서 매번 다시 MDN을 뒤지게 된다. 우리집 시니어의 도움을 받아 지금 개념을 잡아놨으니, 까먹기 전에 정리를 해두자. this binding 쟤네를 이해하려면, 선결과제가 있다. this binding을 이해해야 한다. this는 this고 binding은 뭘까 묶다.감다. 약간 느낌이 온다. this binding은 this에다가 뭔갈 묶는 거구나. const cityinfo = { city: 'Seoul', weather: 'cold', }; function tellWeather() { return `today's ${this.city}'s weather is ${this.weather}'`; } console.. 2021. 12. 5.
아일랜드 (BFS) https://kong-dev.tistory.com/58 아일랜드(DFS) 문제설명 [1, 1, 0, 0, 0, 1, 0], [0, 1, 1, 0, 1, 1, 0], [0, 1, 0, 0, 0, 0, 0], [0, 0, 0, 1, 0, 1, 1], [1, 1, 0, 1, 1, 0, 0], [1, 0, 0, 0, 1, 0, 0], [1, 0, 1, 0, 1, 0, 0], 1은 섬이고 0은 바다다. 섬은.. kong-dev.tistory.com 같은 문제다. 이번엔 BFS로 풀어야 한다. DFS로 하는건 못맞췄는데, BFS는 맞췄다. function solution(board) { let island = 0; const xmoving = [0, 1, 1, 1, 0, -1, -1, -1]; const ymov.. 2021. 12. 5.
아일랜드(DFS) 문제설명 [1, 1, 0, 0, 0, 1, 0], [0, 1, 1, 0, 1, 1, 0], [0, 1, 0, 0, 0, 0, 0], [0, 0, 0, 1, 0, 1, 1], [1, 1, 0, 1, 1, 0, 0], [1, 0, 0, 0, 1, 0, 0], [1, 0, 1, 0, 1, 0, 0], 1은 섬이고 0은 바다다. 섬은 상하좌우 그리고 대각선으로도 연결 돼 있고 이어진 섬은 하나로 친다. 섬의 갯수를 구하라 접근방법 설명이 너무 대충인가. DFS를 이용해서 풀어야 한다. 우선 이중for 문을 이용해서 1을 찾는다. 1을 찾으면 카운트를 하고, DFS함수를 호출한다. DFS함수 내부는 1을 만난 지점을 0으로 바꾸고 팔방으로 1이 있는지 확인한다. 1이 발견되면 그곳으로 이동해서 반복 functio.. 2021. 12. 5.
송아지 찾기!(BFS) 문제설명 철수가 강아지를 잃어버렸다. 현수는 스카이콩콩(...)을 타고 송아지를 찾으러 갈건데 점프 한번에 뒤로한칸 또는 앞으로 한칸 또는 앞으로 5칸을 갈 수 있다. 현수의 위치를 h칸 송아지의 위치를 c칸 라고 했을 때 h칸에서 c칸으로 가기 위한 최소 점프 횟수를 구하는 함수를 완성해라. 단, h 와 c는 1과 10000사이의 정수 이다. ex)h=5 c=14 result=3 접근방법 ㅎ 문제 한번 괴랄하네 스카이콩콩이라니 ㅎㅎ 일단 트리를 만들어서 어떻게 코드를 짤지 생각을 해봤다. ㅎ...그림이 중요한게 아니니까...ㅎ 대충 이런 식으로 생긴 트리다 루트노드 h 인 5로 시작하고 -1, +1, +5 세가지 경우로 자식노드 생기고 14를 찾을 때 까지 반복 한다는 거다. 최단 거리를 찾는 문제니까.. 2021. 12. 3.
미로탐색 문제설명 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 1 0 0 0 1 1 0 1 0 1 1 1 1 0 0 0 0 1 1 1 0 1 1 0 0 1 0 0 0 0 0 0 0은 지나 갈 수 있는 통로. 1은 지나 갈 수 없는 벽. 0,0 부터 시작해서 7,7로 도착하는 경우의 수를 구하는 함수를 완성하세요. function solution(board) { return answer; } let arr = [ [0, 0, 0, 0, 0, 0, 0], [0, 1, 1, 1, 1, 1, 0], [0, 0, 0, 1, 0, 0, 0], [1, 1, 0, 1, 0, 1, 1], [1, 1, 0, 0, 0, 0, 1], [1, 1, 0, 1, 1, 0, 0], [1, 0, 0, 0, 0, 0, 0], ].. 2021. 12. 3.
내 애착 메소드 Array.from 으로 표 만들기 Array.from으로 표를 만들 수 있다. 사실 아니다. 배열인데 모양이 표 모양이다. 이걸 2차원 배열 이라고 한단다. 놀라운 배열의 세계. 내가 처음 본 코드는 const graph = Array.from(Array(n), () => Array(n).fill(0)) 이거였다. 길이가 n인 배열을 각 value에 길이가 n이고 value가 0인 배열을 만들겠다는건데.. [ [ 0, 0, 0, 0, 0, 0 ], [ 0, 0, 0, 0, 0, 0 ], [ 0, 0, 0, 0, 0, 0 ], [ 0, 0, 0, 0, 0, 0 ], [ 0, 0, 0, 0, 0, 0 ], [ 0, 0, 0, 0, 0, 0 ] ] n이 6이라 치면 이런 배열 만들겠다는 거다. 이걸 2차원 배열이라 하나봄 저 코드처음 봤을 때.. 2021. 12. 3.
preorder/ inorder/ postorder 구현 어디 나와있는 건 아니고 어제 우리집 시니어랑 preorder랑 inorder랑 postorder 코드로 구현해보기했다. 헿 맴에드는 그림이 없어서 직접그림 노드안에 저렇게 값이 할당 되어 있을 때, 저 순서대로 순회 하는거다. function solution(tree) { const answer = []; function pre(index) { answer.push(tree[index]); const leftIndex = 2 * index; const rightIndex = 2 * index + 1; if (leftIndex < tree.length) pre(leftIndex); if (rightIndex < tree.length) pre(rightIndex); } pre(1); return answe.. 2021. 12. 1.
Number() 와 parseFloat() 그리고 킹받는 8진법 책에 parseFloat() 가 나왔다. 내가 아는 애들 중에 비슷한 역할을 하는 애는 Number가 있다. 같은 걸까 다른걸까? https://tonks.tistory.com/136 [ 자바스크립트 ] Number() VS parseFloat() 최종 수정일 : 2016. 3. 17. Number() parseFloat() Number() parseFloat() Number() parseFloat() 참고로, 아래와 같이 작성한 경우에는, 오류가 나온다. var a = Number( 00.0001 ); var b = parseFloat( 00.000.. tonks.tistory.com 검색을 하던 와중에 여러가지 케이스를 두고 Number와 parseFloat를 비교해놓은 블로그를 발견했다. 이론적인게.. 2021. 11. 29.
프린터 https://programmers.co.kr/learn/courses/30/lessons/42587 코딩테스트 연습 - 프린터 일반적인 프린터는 인쇄 요청이 들어온 순서대로 인쇄합니다. 그렇기 때문에 중요한 문서가 나중에 인쇄될 수 있습니다. 이런 문제를 보완하기 위해 중요도가 높은 문서를 먼저 인쇄하는 프린 programmers.co.kr 문제 설명 일반적인 프린터는 인쇄 요청이 들어온 순서대로 인쇄합니다. 그렇기 때문에 중요한 문서가 나중에 인쇄될 수 있습니다. 이런 문제를 보완하기 위해 중요도가 높은 문서를 먼저 인쇄하는 프린터를 개발했습니다. 이 새롭게 개발한 프린터는 아래와 같은 방식으로 인쇄 작업을 수행합니다. 1. 인쇄 대기목록의 가장 앞에 있는 문서(J)를 대기목록에서 꺼냅니다. 2. 나.. 2021. 11. 29.
프로토타입의 교체. 모던 자바스크립트 딥다이브의 19장 프로토타입 중에서 #9프로토타입의 교체에서 6페이지의 분량 전체 프로토타입 분량중에서도 1/10정도 되는 양이고 책 전체로 따지면 1.5% 정도 되는 분량일거다. 근데 나는 이걸 이해하려고 30분이 걸렸다.. 그치만 나의 빡대갈은 언제 또 까먹을지 모른다. 힘들게 이해한거 까먹기 전에 정리를 해보자 프로토타입의 교체 포로토타입은 다른 객체로 변경이 가능함. 즉 객체간의 상속관계를 변경할 수 있음 생성자함수 or 인스턴스에 의해 교체가능함. 생성자함수에 의한 프로토타입의 교체. //생성자 함수 const Person = function (name) { this.name = name; }; //객체 생성 const me = new Person('Lee'); console... 2021. 11. 29.
기능개발 https://programmers.co.kr/learn/courses/30/lessons/42586 코딩테스트 연습 - 기능개발 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 programmers.co.kr 문제 설명 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 기능보다 먼저 개발될 수 있고, 이때 뒤에 있는 기능은 앞에 있는 기능이 배포될 때 함께 배포됩니다. 먼저 배포되어야 하는 순서대로 작업의 진도가 적힌 .. 2021. 11. 27.
대중소괄호 짝 맞추기 우리집 시니어가 추천해준 문제 프로그래머스에서는 문제가 지워진 듯 하다. 블로그들에 남아있던 문제 보고 풀었음 문제 설명 여섯 가지 괄호 '(', ')', '{', '}', '[', ']'로 이루어진 문자열이 바르게 닫힌 문자열인지 알아보려 합니다. 바르게 닫힌 문자열이라는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로, '[' 문자로 열렸으면 반드시 짝지어서 ']' 문자로, '{' 문자로 열렸으면 반드시 짝지어서 '}' 문자로 닫히는 문자열입니다. 또한, 괄호 쌍 안에는 다른 괄호 쌍이 들어갈 수 있습니다. 예를 들어, {{}}, ({})[]는 바르게 닫힌 괄호입니다. [), ]()[, ([())]는 바르게 닫히지 않은 괄호입니다. 문자열 s가 주어졌을 때, 문자열 s가 바르게 닫힌 괄호이.. 2021. 11. 26.
올바른 괄호 문제 설명 괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어 "()()" 또는 "(())()" 는 올바른 괄호입니다. ")()(" 또는 "(()(" 는 올바르지 않은 괄호입니다. '(' 또는 ')' 로만 이루어진 문자열 s가 주어졌을 때, 문자열 s가 올바른 괄호이면 true를 return 하고, 올바르지 않은 괄호이면 false를 return 하는 solution 함수를 완성해 주세요. 접근방법 count 에 0 할당하고 while로 count 0 이하로 떨어지면 바로 false 리턴 하게 설정해놓고 ( 이거 들어오면 1 넣고 ) 들어오면 -1 넣고 마지막 값이 0이 면 true 리턴 0아니면 false 리턴 function sol.. 2021. 11. 26.
11653 소인수분해 문제설명 정수 N이 주어졌을 때, 소인수분해하는 프로그램을 작성하시오. 첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)이 주어진다. N의 소인수분해 결과를 한 줄에 하나씩 오름차순으로 출력한다. N이 1인 경우 아무것도 출력하지 않는다. 접근방법 배열하나 찍고.. N이 1 이면 출력 없게 끔 얼리리턴 하고 for문 돌리고 if로 나머지 0일때 i를 빈배열에 집어 넣고 N에다가 i로 나눈 값 재할당해주고 i에서 1빼주고 다시 반복문 돌리면 될드읏? 아 리턴은 배열에 join으로 줄바꿔서... function solution(number) { let answer = []; if (number === 1) return; for (let i = 2; i 2021. 11. 25.
number사이에 string이 있어도 number다. 제목 어그로 지렸다. 유튜바 경력 어디안간다. https://kong-dev.tistory.com/23?category=982997 문자열 다루기 기본 문제 설명 문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요. 예를 들어 s가 "a234"이면 False를 리턴하고 "1234"라면 True를 리턴하면 됩니다. 접근방법 kong-dev.tistory.com 또 이 문젠데 우리집 시니어가 이거 풀라면서 예외가 있으니까 잘 생각 해보랬다. function solution(s) { const arr = s.split(''); if (arr.length !== 4 && arr.length !== 6) { return false; } for (let valu.. 2021. 11. 24.
includes로 NaN을 확인 할 수 있을까? https://kong-dev.tistory.com/23?category=982997 문자열 다루기 기본 문제 설명 문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요. 예를 들어 s가 "a234"이면 False를 리턴하고 "1234"라면 True를 리턴하면 됩니다. 접근방법 kong-dev.tistory.com 저 문제 정리하다가 갑자기 생긴 의문 배열에 NaN 이 있으면 includes로 찾을 수 있을까..? let arr = [NaN]; console.log(arr10.includes(NaN)); // true 정답은 찾을 수 있다. 쌉가능 어떻게 찾는 걸까 console.log(NaN === NaN); // false NaN은 자기자신과도 같기.. 2021. 11. 24.
문자열 다루기 기본 문제 설명 문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요. 예를 들어 s가 "a234"이면 False를 리턴하고 "1234"라면 True를 리턴하면 됩니다. 접근방법 우선 split으로 배열로 바꾸고 if 로 자릿수를 확인하고 자릿수 안맞으면 바로 false 리턴하고 문자열을 Number를 이용해서 숫자로 바꾸려하면 NaN이 나오니까 for of로 isNaN을 돌려서 트루가 나오면 answer에 1을 더해주고 false 나오면 0을 더해주고..... !answer 리턴 하면.. 되겠지?? function solution(s) { let answer = 0; const arr = s.split(''); if (arr.length === 4 || a.. 2021. 11. 24.
자릿수 더하기 문제 설명 자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요. 예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다. 접근방법 음.. toString으로 문자열로 변경 split으로 배열로 바꾸고 reduce로 총합 구해주면 되는데 아 문자열이지 그럼 Number로 숫자로변경하고 더해주자 function solution(n) { return n .toString() .split('') .reduce((acc, cur) => acc + Number(cur), 0); } 깔끔. 그리고 다른 사람 답 보다가 발견한 while 뭔가 수학적으로 접근 하는 거 같아서 신기함 function getSum(n) { let sum = 0.. 2021. 11. 24.
728x90
728x90