TIL16-01 오늘의 코딩테스트

김태혁·2023년 1월 27일
0

TIL

목록 보기
50/205
  1. 음양 더하기
    어떤 정수들이 있습니다. 이 정수들의 절댓값을 차례대로 담은 정수 배열 absolutes와 이 정수들의 부호를 차례대로 담은 불리언 배열 signs가 매개변수로 주어집니다. 실제 정수들의 합을 구하여 return 하도록 solution 함수를 완성해주세요.
function solution(absolutes, signs) {
    let answer = 0;
    for (let i = 0; i <signs.length; i++) {
        if(signs[i] === true) {  //배열의 각 원소가 true일때 양수이므로
            answer += absolutes[i];  //양수를 더해주고,
        } else {
            answer += -absolutes[i]; //false이면 음수이므로 음수도 더해준다.
        }
    }
    return answer;
}
  1. 두 정수 사이의 합 (Math.max, Math,min 활용하여 다시 풀어봄)
    두 정수 a, b가 주어졌을 때 a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수, solution을 완성하세요.
    예를 들어 a = 3, b = 5인 경우, 3 + 4 + 5 = 12이므로 12를 리턴합니다.
function solution(a, b) {
  let sum = 0; //더해줄 sum을 초기값 0 으로 선언
  let max = Math.max(a, b); //a,b사이에 큰 값
  let min = Math.min(a, b); //a,b 사시에 작은 값
  for (let i = min; i <= max; i++) {
    sum += i; //최소값과 최대값 그리고 사이 값을 sum에 더해준다.
  }
  return sum;
}
console.log(solution(5, 3));
  1. 직사각형 별찍기
    이 문제에는 표준 입력으로 두 개의 정수 n과 m이 주어집니다.
    별(*) 문자를 이용해 가로의 길이가 n, 세로의 길이가 m인 직사각형 형태를 출력해보세요.
process.stdin.setEncoding("utf8");
process.stdin.on("data", (data) => {
  const n = data.split(" ");
  const a = Number(n[0]),
    b = Number(n[1]);
    let star = "*".repeat(a); //a만틈 "*" 를 반복한다.
  for (let i = 0; i < b; i++) {
    console.log(star); //b만큼 star를 반복해서 콘솔에 찍는다.
} 
});
  1. x만큼 간격이 있는 n개의 숫자
    함수 solution은 정수 x와 자연수 n을 입력 받아, x부터 시작해 x씩 증가하는 숫자를 n개 지니는 리스트를 리턴해야 합니다. 다음 제한 조건을 보고, 조건을 만족하는 함수, solution을 완성해주세요.
function solution(x, n) {
    let answer = []; //빈 배열 선언
    let a = 0; //x만큼 더해 줄 초기값 선언
    for(let i = 0; i < n; i++) {
        answer.push( a += x); // n-1의 횟수만 큼 x를 계속 더해주고, answer 배열에 집어 넣는다.
    }
    return answer;
}
  1. 부족한 금액 계산하기
    새로 생긴 놀이기구는 인기가 매우 많아 줄이 끊이질 않습니다. 이 놀이기구의 원래 이용료는 price원 인데, 놀이기구를 N 번 째 이용한다면 원래 이용료의 N배를 받기로 하였습니다. 즉, 처음 이용료가 100이었다면 2번째에는 200, 3번째에는 300으로 요금이 인상됩니다.
    놀이기구를 count번 타게 되면 현재 자신이 가지고 있는 금액에서 얼마가 모자라는지를 return 하도록 solution 함수를 완성하세요.
    단, 금액이 부족하지 않으면 0을 return 하세요.
function solution(price, money, count) {
    let answer = 0; // 초기값 0으로 선언
    for (let i = 1; i<=count; i++ ) {
        answer += price*i //i는 카운트만큼 타는 횟수 * price 나온 값은 answer 에 더해준다.
    }
    if (answer > money) { //answer > money일 때 부족한 것이므로
        return answer - money;// anwer-money로 부족한 금액 반환
    } else { //아니라면 부족한게 아니므로 0을 반환
        return 0;
    }    
}
  1. 문자열 내 p와 y의 개수
    대문자와 소문자가 섞여있는 문자열 s가 주어집니다. s에 'p'의 개수와 'y'의 개수를 비교해 같으면 True, 다르면 False를 return 하는 solution를 완성하세요. 'p', 'y' 모두 하나도 없는 경우는 항상 True를 리턴합니다. 단, 개수를 비교할 때 대문자와 소문자는 구별하지 않습니다.
    예를 들어 s가 "pPoooyY"면 true를 return하고 "Pyy"라면 false를 return합니다.
function solution(s){
    let str = s.toLowerCase(); // 문자열 통일 위해 소문자로 변환 
    let countP = 0; // p를 카운트 하기 위한 초기값 0 선언;
    let countY = 0; // y를 카운트 하기 위한 초기값 0 선언;
    for (let i = 0; i < str.length; i++) {
        if( str[i] == "p") {  //문자열에 "p"가 포함될 때 카운트를 더해준다.
            countP++;
        } else if (str[i] =="y") {//문자열에 "y"가 포함될 때 카운트를 더해준다.
            countY++;
        }
    }
    return countP==countY;   
}

// 간단한 풀이
 function solution2(s) {
    return s.toLowerCase().split('p').length 
        == s.toLowerCase().split('y').length;
 }

 console.log(solution2("pPoooyY"));
  1. 서울에서 김서방 찾기
    String형 배열 seoul의 element중 "Kim"의 위치 x를 찾아, "김서방은 x에 있다"는 String을 반환하는 함수, solution을 완성하세요. seoul에 "Kim"은 오직 한 번만 나타나며 잘못된 값이 입력되는 경우는 없습니다.
function solution(seoul) {
    let a = seoul.indexOf("Kim");
    return `김서방은 ${a}에 있다`
}
profile
도전을 즐기는 자

0개의 댓글