생각/javascript

알고리즘 연습 11-20번

kyunghoonk00k 2022. 9. 24. 21:17
반응형
// 11. x만큼 간격이 있는 n개의 숫자

// 함수 solution은 정수 x와 자연수 n을 입력 받아, x부터 시작해 x씩 증가하는 숫자를 n개 지니는 리스트를 리턴해야 합니다. 다음 제한 조건을 보고, 조건을 만족하는 함수, solution을 완성해주세요.

function solution1(x, n) {
  var answer = [];
  for (let i = 1; i <= n; i++) {
    answer.push(x * i);
  }
  return answer;
}

// console.log(solution1(2, 5));
// i=0 부터 시작하면 0부터 출력 됨[0, 2, 4, 6, 8, 10],
// i=1 부터 [2, 4, 6, 8, 10];

// 12.부족한 금액 계산하기

// 새로 생긴 놀이기구는 인기가 매우 많아 줄이 끊이질 않습니다. 이 놀이기구의 원래 이용료는 price원 인데,
//  놀이기구를 N 번 째 이용한다면 원래 이용료의 N배를 받기로 하였습니다.즉, 처음 이용료가 100이었다면 2번째에는 200, 3번째에는 300으로 요금이 인상됩니다.
// 놀이기구를 count번 타게 되면 현재 자신이 가지고 있는 금액에서 얼마가 모자라는지를 return 하도록 solution 함수를 완성하세요.
// 단, 금액이 부족하지 않으면 0을 return 하세요.

function solution(price, money, count) {
  let total = 0;

  for (let i = 1; i <= count; i++) {
    total += price * i;
  }

  return money > total ? 0 : total - money;
}
// 13.2016년 // 2016년 1월 1일은 금요일입니다. 2016년 a월 b일은 무슨 요일일까요? 두 수 a ,b를 입력받아 2016년 a월 b일이 무슨 요일인지 리턴하는 함수, solution을 완성하세요. 요일의 이름은 일요일부터 토요일까지 각각 SUN,MON,TUE,WED,THU,FRI,SAT
// 예를 들어 a=5, b=24라면 5월 24일은 화요일이므로 문자열 "TUE"를 반환하세요.

function solution(a, b) {
  var answer = "";
  let dayArr = ["SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"];

  let date = new Date(2016, a - 1, b).getDay();

  answer = dayArr[date];
  return answer;
}

//  풀이보고 이해...

// 14. 나누어 떨어지는 숫자 배열 array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수,
//  solution을 작성해주세요.divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 - 1을 담아 반환하세요.

function solution(arr, divisor) {
  var answer = arr.filter((newarr) => newarr % divisor === 0);

  if (answer.length === 0) {
    return [-1];
  } else {
    answer.sort((a, b) => a - b);
    //         sort 오름차순 정렬 = 파라미터에 a,b를 선안하고 a-b 하면 오름차순 b-a 내림차순
  }

  return answer;
}

// 15. 길이가 같은 두 1차원 정수 배열 a, b가 매개변수로 주어집니다.
// a와 b의 내적을 return 하도록 solution 함수를 완성해주세요.
//   이때, a와 b의 내적은 a[0] * b[0] + a[1] * b[1] + ... + a[n - 1] * b[n - 1] 입니다. (n은 a, b의 길이)

function solution(a, b) {
  let answer = 0;
  for (let i = 0; i < a.length; i++) {
    answer += a[i] * b[i];
  }

  return answer;
}

// 16. 문자열 내 p와 y의 개수 대문자와 소문자가 섞여있는 문자열 s가 주어집니다.
// s에 'p'의 개수와 'y'의 개수를 비교해 같으면 True, 다르면 False를 return 하는 solution를 완성하세요.
//  'p', 'y' 모두 하나도 없는 경우는 항상 True를 리턴합니다.단, 개수를 비교할 때 대문자와 소문자는 구별하지 않습니다.
//  예를 들어 s가 "pPoooyY"면 true를 return하고 "Pyy"라면 false를 return합니다.

function solution(s) {
  let lowercase = s.toLowerCase();

  let check_p = lowercase.split("p").length;
  let check_y = lowercase.split("y").length;

  return check_p === check_y ? true : false;
}

// 17. 문자열 다루기 기본 문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요.
// 예를 들어 s가 "a234"이면 False를 리턴하고 "1234"라면 True를 리턴하면 됩니다.
function solution(s) {
  return (s.length === 4 || s.length === 6) && s == parseInt(s);
}

// 해결 안됨 ---- 해결 : 숫자로만 구성되어 있는지 확인 어떻게?! parseInt로 묶으면 됨.... 생각 다시하기..

// 18. 김서방 찾기 String형 배열 seoul의 element중 "Kim"의 위치 x를 찾아,
// "김서방은 x에 있다"는 String을 반환하는 함수, solution을 완성하세요.seoul에 "Kim"은 오직 한 번만 나타나며 잘못된 값이 입력되는 경우는 없습니다.

function solution(seoul) {
  for (let i = 0; i < seoul.length; i++) {
    if (seoul[i] === "Kim") return `김서방은 ${i}에 있다`;
  }
}

// 19. 수박수 세기

function solution(n) {
  let count = Math.floor(n / 2);
  // 횟수 세주는거
  let answer = "수박".repeat(count);
  if (n % 2) return answer + "수";
  // 횟수가 홀수면 수를 붙여서 리턴하기
  return answer;
}

// 웃기다
function waterMelon(n) {
  var result =
    "수박수박수박수박수박수박수박수박수박수박수박수박수박수박수박수박수박수박수박수박수박수박수박수박수박수박수박수박수박수박수박수박";
  //함수를 완성하세요

  return result.substring(0, n);
}

// 실행을 위한 테스트코드입니다.

// 20.완주하지 못한 선수 수많은 마라톤 선수들이 마라톤에 참여하였습니다.
// 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다.마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때,
//   완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작성해주세요.
function solution(participant, completion) {
  participant.sort(); //참가자 배열 정렬
  completion.sort(); // 완주자 배열 정렬
  for (let i = 0; i < participant.length; i++) {
    if (participant[i] !== completion[i]) {
      return participant[i];
    }
  }
  let a = ["leo", "kiki", "eden"];
  let b = ["eden", "kiki"];
  console.log(solution(a, b));
}
반응형

'생각 > javascript' 카테고리의 다른 글

혼공스 피라미드 , 윤년  (1) 2022.09.24
알고리즘 연습 21-28번  (1) 2022.09.24
알고리즘 연습 1-10번  (1) 2022.09.24
reduce함수  (0) 2022.09.24
JavaScript 정리  (3) 2022.09.23