본문 바로가기
300x250

개발 공부143

[자료구조 with javascript] Graph 그래프 탐색 개념 정리(인접행렬) Graph란? 그래프는 여러개의 점들이 서로 복잡하게 연결되어 있는 관계를 표현한 자료구조이다 직접적인 관계가 있는 경우 두 점 사이를 이어주는 선이 있다. 간접적인 관계라면 몇 개의 점과 선에 걸쳐 있다. 하나의 점을 그래프에서는 정점(vertex)이라고 표현하고, 하나의 선은 간선(edge) 이라고 한다. 즉, 정점과 간선으로 이루어진 자료구조의 일종 무방향 그래프와 방향그래프 간선의 종류에 따라 무방향 그래프(undirected graph)와 방향 그래프(directed graph)로 구분된다. 무방향 그래프의 간선은 간선을 통해서 양방향으로 갈 수 있는 그래프를 말한다. 예를 들면 우리가 차를 타고 서울에서 부산으로 갈 수 있고, 부산에서 서울로 올수 있다. 정점 A와 B를 연결하는 간선은 (A,.. 2021. 6. 20.
코드스테이츠 11주차지만 6주차리뷰 - 기수이동 후 첫 주 섹션 투에서 기수이동되고나서 첫주가 흘렀다. 기수이동 되었을 때 약간의 충격을 받았던거와 달리 한주가 지나고 나서 이 글을 쓰는 지금, 기수이동 된 것에 굉장히 만족하고 있다. 그 이유는 자료 구조의 그래프와 트리를 조금은 이해할 수 있게 되었다. 기수이동 전 섹션투를 진행했을 때 자료구조 부분에서 나는 문제를 포기했었다. 13개의 스택, 큐, 트리, 그래프 문제가 있었고, 그 중에 나는 6개의 문제를 포기했었다. 레퍼런스는 봐도 이해 안되고, 뭔 소린지 도통 모르겠어서,,, 멘탈 붕괴 직전까지 가서 내가 싫었다ㅋㅋㅋㅋ 그냥 넘어가서 섹션쓰리를 배웠다면 오히려 더 고생했을거다. 두번째인 지금은 문제를 이해하고, 페어와 코드로 구현하고 반복하여 내것으로 만들었다. 다른 페어분도 도와줄 수 있을 정도로 문제.. 2021. 6. 20.
[알고리즘 문제풀이]올바른 괄호_프로그래머스 2단계 문제 문제설명 괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어 "()()" 또는 "(())()" 는 올바른 괄호입니다. ")()(" 또는 "(()(" 는 올바르지 않은 괄호입니다. '(' 또는 ')' 로만 이루어진 문자열 s가 주어졌을 때, 문자열 s가 올바른 괄호이면 true를 return 하고, 올바르지 않은 괄호이면 false를 return 하는 solution 함수를 완성해 주세요. 주의사항 문자열 s의 길이 : 100,000 이하의 자연수 문자열 s는 '(' 또는 ')' 로만 이루어져 있습니다. 입출력예시 코드 function solution(str){ let answer = true; let stack = []; if(str[.. 2021. 6. 20.
[알고리즘 문제풀이] 10부제_기초문제 문제설명 뉴욕은 자동차 10부제를 시행한다. 자동차 10부제는 자동차 번호의 일의 자리 숫자와 날짜의 일의 자리 숫자가 일치하면 해당 자동차의 운행을 금지하는 것이다. 예를 들어, 자동차 번호의 일의 자리 숫자가 7이면 7일, 17일, 27일에 운행하지 못한다. 또한, 자동차 번호의 일의 자리 숫자가 0이면 10일, 20일, 30일에 운행하지 못한다. 날짜의 일의 자리 숫자가 주어지고 7대의 자동차 번호가 주어졌을 때 위반하는 자동차의 대수를 출력하는 프로그램을 작성하세요. 주의사항 변수 day = 날짜의 일의 자리 숫자가 주어지고 변수 arr = 7대의 자동차 번호가 주어진다. 입출력예시 const output1 = solution(3, [4425, 4723, 8211, 8447, 6953, 1117,.. 2021. 6. 19.
[알고리즘 문제풀이] 삼각형 판별하기 문제설명 길이가 서로 다른 a,b,c 세 개의 막대 길이가 주어지면 이 세 막대로 삼각형을 만들 수 있는지 확인한다. 가능하다면 true, 만들 수 없다면 false를 리턴한다. 주의사항 짧은 막대 2개의 합 === 긴 막대 1개 보다 커야 삼각형이 된다. 입출력예시 const result1 = solution( 44, 22, 65) ; console.log(result1); // true const result2 = solution( 10, 5, 2) ; console.log(result2); // false 코드 function solution( a , b , c ) { let answer= true let max; let sum = a+b+c; if( a > b ) max =a ; else max .. 2021. 6. 19.
[알고리즘 문제풀이] 키패드 누르기 문제설명 스마트폰 전화 키패드의 각 칸에 다음과 같이 숫자들이 적혀 있습니다. 이 전화 키패드에서 왼손과 오른손의 엄지손가락만을 이용해서 숫자만을 입력하려고 합니다. 맨 처음 왼손 엄지손가락은 * 키패드에 오른손 엄지손가락은 # 키패드 위치에서 시작하며, 엄지손가락을 사용하는 규칙은 다음과 같습니다. 엄지손가락은 상하좌우 4가지 방향으로만 이동할 수 있으며 키패드 이동 한 칸은 거리로 1에 해당합니다. 왼쪽 열의 3개의 숫자 1, 4, 7을 입력할 때는 왼손 엄지손가락을 사용합니다. 오른쪽 열의 3개의 숫자 3, 6, 9를 입력할 때는 오른손 엄지손가락을 사용합니다. 가운데 열의 4개의 숫자 2, 5, 8, 0을 입력할 때는 두 엄지손가락의 현재 키패드의 위치에서 더 가까운 엄지손가락을 사용합니다. 4-.. 2021. 6. 19.
[알고리즘 문제풀이]x만큼 간격이 있는 n개의 숫자_프로그래머스1단계 문제설명 함수 solution은 정수 x와 자연수 n을 입력 받아, x부터 시작해 x씩 증가하는 숫자를 n개 지니는 리스트를 리턴해야 합니다. 다음 제한 조건을 보고, 조건을 만족하는 함수, solution을 완성해주세요. 주의사항 x는 -10000000 이상, 10000000 이하인 정수입니다. n은 1000 이하인 자연수입니다. 입출력예시 코드 function solution(x, n) { let answer = []; for(let i =0; i 2021. 6. 18.
[알고리즘 문제풀이] 두 개 뽑아서 더하기 문제설명 정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요. 주의사항 numbers의 길이는 2 이상 100 이하입니다 numbers의 모든 수는 0 이상 100 이하입니다. 입출력예시 코드 function solution(numbers) { var answer = []; for(let i =0; i < numbers.length ; i ++){ for(let j=i+1; j 2021. 6. 18.
[알고리즘 문제풀이]3개의 수를 더한 숫자를 소수 만들기 문제풀이 주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하려고 합니다. 숫자들이 들어있는 배열 nums가 매개변수로 주어질 때, nums에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때 소수가 되는 경우의 개수를 return 하도록 solution 함수를 완성해주세요. 제한사항 nums에 들어있는 숫자의 개수는 3개 이상 50개 이하입니다. nums의 각 원소는 1 이상 1,000 이하의 자연수이며, 중복된 숫자가 들어있지 않습니다. 입출력예시 코드 function solution(nums) { let answer = 0, number=0; for(let i=0;i 2021. 6. 16.
반응형