TIL18-01 오늘의 코딩테스트

김태혁·2023년 1월 30일
0

TIL

목록 보기
63/205
  1. 숫자 문자열과 영단어
    다음은 숫자의 일부 자릿수를 영단어로 바꾸는 예시입니다.
    1478 → "one4seveneight"
    234567 → "23four5six7"
    10203 → "1zerotwozero3"
    이렇게 숫자의 일부 자릿수가 영단어로 바뀌어졌거나, 혹은 바뀌지 않고 그대로인 문자열 s가 매개변수로 주어집니다. s가 의미하는 원래 숫자를 return 하도록 solution 함수를 완성해주세요.
function solution(s) {
    let a = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"];
    for (let i = 0; i < a.length; i++) {
         let b = s.replaceAll(a[i],i); // 문자열에서 a[i]의 요소들과 일치하면 전부 i의 수로 바꾼다.
          s = b;  // 바꾼 문자열로 다시 검색해야하므로 s를 b로 변경해준다.
    }
    return Number(s); //최종적으로 s를 숫자로 변경해준다.
}
  1. 문자열 내 마음대로 정렬하기
    문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 ["sun", "bed", "car"]이고 n이 1이면 각 단어의 인덱스 1의 문자 "u", "e", "a"로 strings를 정렬합니다.
function solution(strings, n) {
    let string = [];
    for (let i = 0; i < strings.length; i++) {
        let front = strings[i][n]; // n번째 인덱스의 글자를 앞글자로 하기 위해 변수를 선언한다.
        strings[i] = front + strings[i]; // 추출한 글자를 각 문자열 앞에 붙여준다. 
        string.push(strings[i]); // 붙인 문자열을 빈배열에 넣는다.
    }
     let a = string.sort() //배열을 정렬해준다. 
     let answer = [];
     for (let i = 0; i < a.length; i++) {
        answer.push(a[i].slice(1)); // 정렬된 문자열에서 붙여준 첫글자를 제거하고 다시 반환한 뒤 새로운 배열에 넣는다.
     }
    return answer;
} 
  1. 소수 만들기
    주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하려고 합니다. 숫자들이 들어있는 배열 nums가 매개변수로 주어질 때, nums에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때 소수가 되는 경우의 개수를 return 하도록 solution 함수를 완성해주세요.
function solution(nums) {
    let len = nums.length, answer = 0;  
    for (let i = 0; i < len - 2; i++) {   
      for (let j = i + 1; j < len - 1; j++) {
        for (let k = j + 1; k < len; k++) {
          if (isPrime(nums[i] + nums[j] + nums[k])) { //각 원소 3개씩만 더해서 isPrime 함수의 인자로 넣는다.
            answer++;    //소수이면 카운트 한다.
          }
        }
      }
    }
    
    return answer;
  }
  
const isPrime = (n) => {
    for (let i = 2; i <= Math.sqrt(n); i++) {
      if (n % i === 0) {
        return false;
      }
    }  
    return true;
  }
profile
도전을 즐기는 자

0개의 댓글