본문 바로가기
300x250

프로그래머스12

[프로그래머스 3단계] 연결된 정점드 with 자바스크립트(깊이 우선 탐색(DFS)) 문제설명 네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다. 예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어있고, 컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있을 때 컴퓨터 A와 컴퓨터 C도 간접적으로 연결되어 정보를 교환할 수 있습니다. 따라서 컴퓨터 A, B, C는 모두 같은 네트워크 상에 있다고 할 수 있습니다. 컴퓨터의 개수 n, 연결에 대한 정보가 담긴 2차원 배열 computers가 매개변수로 주어질 때, 네트워크의 개수를 return 하도록 solution 함수를 작성하시오. 주의사항 컴퓨터의 개수 n은 1 이상 200 이하인 자연수입니다. 각 컴퓨터는 0부터 n-1인 정수로 표현합니다. i번 컴퓨터와 j번 컴퓨터가 연결되어 있으면 computers[i.. 2021. 7. 5.
[프로그래머스 3단계] 여행경로 with 자바스크립트 문제설명 주어진 항공권을 모두 이용하여 여행경로를 짜려고 합니다. 항상 "ICN" 공항에서 출발합니다. 항공권 정보가 담긴 2차원 배열 tickets가 매개변수로 주어질 때, 방문하는 공항 경로를 배열에 담아 return 하도록 solution 함수를 작성해주세요. 주의사항 모든 공항은 알파벳 대문자 3글자로 이루어집니다. 주어진 공항 수는 3개 이상 10,000개 이하입니다. tickets의 각 행 [a, b]는 a 공항에서 b 공항으로 가는 항공권이 있다는 의미입니다. 주어진 항공권은 모두 사용해야 합니다. 만일 가능한 경로가 2개 이상일 경우 알파벳 순서가 앞서는 경로를 return 합니다. 모든 도시를 방문할 수 없는 경우는 주어지지 않습니다. 입출력예시 코드 function solution(ti.. 2021. 7. 4.
[프로그래머스 1단계] 두 정수 사이의 합 with 자바스크립트 문제설명 두 정수 a, b가 주어졌을 때 a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수, solution을 완성하세요. 예를 들어 a = 3, b = 5인 경우, 3 + 4 + 5 = 12이므로 12를 리턴합니다. 주의사항 a와 b가 같은 경우는 둘 중 아무 수나 리턴하세요. a와 b는 -10,000,000 이상 10,000,000 이하인 정수입니다. a와 b의 대소관계는 정해져있지 않습니다. 입출력예시 코드 function solution(a, b) { if(a===b) return a let max = Math.max(a,b) let min = Math.min(a,b); let answer =0 for(min; min 2021. 6. 26.
[프로그래머스 1단계] 가장 작은수 제거하기 with javascript 문제설명 정수를 저장한 배열, arr 에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성해주세요. 단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하세요. 예를들어 arr이 [4,3,2,1]인 경우는 [4,3,2]를 리턴 하고, [10]면 [-1]을 리턴 합니다. 주의사항 arr은 길이 1 이상인 배열입니다. 인덱스 i, j에 대해 i ≠ j이면 arr[i] ≠ arr[j] 입니다 입출력예시 코드 function solution(arr) { if(arr.length === 0) return -1 if(arr.length === 1) return [-1] let minIdx = arr.indexOf(Math.min(...arr)); arr.splice(minIdx,1.. 2021. 6. 23.
[프로그래머스 1단계] 콜라츠 추측 문제설명 1937년 Collatz란 사람에 의해 제기된 이 추측은, 주어진 수가 1이 될때까지 다음 작업을 반복하면, 모든 수를 1로 만들 수 있다는 추측입니다. 작업은 다음과 같습니다. 1-1. 입력된 수가 짝수라면 2로 나눕니다. 1-2. 입력된 수가 홀수라면 3을 곱하고 1을 더합니다. 2. 결과로 나온 수에 같은 작업을 1이 될 때까지 반복합니다. 예를 들어, 입력된 수가 6이라면 6→3→10→5→16→8→4→2→1 이 되어 총 8번 만에 1이 됩니다. 위 작업을 몇 번이나 반복해야하는지 반환하는 함수, solution을 완성해 주세요. 주의사항 단, 작업을 500번을 반복해도 1이 되지 않는다면 –1을 반환해 주세요. 입력된 수, num은 1 이상 8000000 미만인 정수입니다. 입출력예시 코.. 2021. 6. 23.
[프로그래머스 1단계] 하샤드 수 문제설명 양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하샤드 수인지 아닌지 검사하는 함수, solution을 완성해주세요. 주의사항 x는 1 이상, 10000 이하인 정수입니다. 입출력예시 코드 function solution(x) { let str = x.toString() let num = 0 for(let i=0; i < str.length; i++){ num += parseInt(str[i]) } return x % num !== 0 ? false : true } 해석 먼저 문자열로 만들어준후, 반복문을 돌린다. num에다가 하나씩 더해.. 2021. 6. 23.
[프로그래머스 1단계] 행렬의 덧셈_문제풀이 문제설명 행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다. 2개의 행렬 arr1과 arr2를 입력받아, 행렬 덧셈의 결과를 반환하는 함수, solution을 완성해주세요. 주의사항 행렬 arr1, arr2의 행과 열의 길이는 500을 넘지 않습니다. 입출력예시 코드 function solution(arr1, arr2) { let answer = []; for(let i =0; i < arr1.length; i++){ let temp = []; for(let j=0; j < arr1[i].length ; j++){ let sum = arr1[i][j] + arr2[i][j] temp.push(sum); } answer.push(temp); } return.. 2021. 6. 23.
[알고리즘] 체육복_프로그래머스 1단계 문제설명 점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다. 다행히 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려주려 합니다. 학생들의 번호는 체격 순으로 매겨져 있어, 바로 앞번호의 학생이나 바로 뒷번호의 학생에게만 체육복을 빌려줄 수 있습니다. 예를 들어, 4번 학생은 3번 학생이나 5번 학생에게만 체육복을 빌려줄 수 있습니다. 체육복이 없으면 수업을 들을 수 없기 때문에 체육복을 적절히 빌려 최대한 많은 학생이 체육수업을 들어야 합니다. 전체 학생의 수 n, 체육복을 도난당한 학생들의 번호가 담긴 배열 lost, 여벌의 체육복을 가져온 학생들의 번호가 담긴 배열 reserve가 매개변수로 주어질 때, 체육수업을 들을 수 있는 학생의 최댓값을 return 하도록 solution 함수를 .. 2021. 6. 20.
[알고리즘 문제풀이] 두 개 뽑아서 더하기 문제설명 정수 배열 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.
반응형