본문 바로가기
코딩테스트/프로그래머스 0단계 - 입문

프로그래머스 0단계 - Day18 문자열, 수학, 조건문, 정렬

by 학습하는 청년 2024. 3. 23.

문자열 안에 문자열

문자열 str1, str2가 매개변수로 주어집니다. str1 안에 str2가 있다면 1을 없다면 2를 return하도록 solution 함수를 완성해주세요.

  • 1 ≤ str1의 길이 ≤ 100
  • 1 ≤ str2의 길이 ≤ 100
  • 문자열은 알파벳 대문자, 소문자, 숫자로 구성되어 있습니다.
function solution(str1, str2) {
  for(let str1Idx = 0; str1Idx < str1.length; str1Idx++) {
    const str1Item = str1[str1Idx];
    let isAllEqual = true;
    for(let str2Idx = 0; str2Idx < str2.length; str2Idx++) {
      if(str1[str1Idx+str2Idx] !== str2[str2Idx]) {
        isAllEqual = false;
      }
    }
    if(isAllEqual) {
      return 1;
    }
  }
  return 2;
}

// 다른 사람의 풀이
function solution(str1, str2) {
  for(let str1Idx = 0; str1Idx < str1.length; str1Idx++) {
    const str1Item = str1[str1Idx];
    let isAllEqual = true;
    for(let str2Idx = 0; str2Idx < str2.length; str2Idx++) {
      if(str1[str1Idx+str2Idx] !== str2[str2Idx]) {
        isAllEqual = false;
        str1Idx = str1Idx + str2Idx;
        break;
      }
    }
    if(isAllEqual) {
      return 1;
    }
  }
  return 2;
}

function solution(str1, str2) {
  return str1.split(str2).length > 1 ? 1 : 2
}

function solution(str1, str2) {
  return str1.indexOf(str2) === -1 ? 2 : 1;
}

function solution(str1, str2) {
  return str1.includes(str2) ? 1 : 2;
}

 

<다른 사람의 풀이에 대한 이해>

splite()

 

indexOf()

 

includes()


제곱수 판별하기

어떤 자연수를 제곱했을 때 나오는 정수를 제곱수라고 합니다. 정수 n이 매개변수로 주어질 때, n이 제곱수라면 1을 아니라면 2를 return하도록 solution 함수를 완성해주세요.

  • 1 ≤ n ≤ 1,000,000
function solution(n) {
  for(let i = 1; ; i++) {
    if(i * i === n) return 1;
    if(i * i > n) return 2;
  }
}

// 다른 사람의 풀이
function solution(n) {
  return Number.isInteger(Math.sqrt(n)) ? 1 : 2;
}

function solution(n) {
  return Math.sqrt(n) % 1 === 0 ? 1 : 2;
}

 

<다른 사람의 풀이에 대한 이해>

isInteger()

 

sqrt()


세균 증식

어떤 세균은 1시간에 두배만큼 증식한다고 합니다. 처음 세균의 마리수 n과 경과한 시간 t가 매개변수로 주어질 때 t시간 후 세균의 수를 return하도록 solution 함수를 완성해주세요.

  • 1 ≤ n ≤ 10
  • 1 ≤ t ≤ 15
function solution(n, t) {
  return 2 ** t * n;
}

// 다른 사람의 풀이
function solution(n, t) {
  return n << t;
}

function solution(n, t) {
  return n*Math.pow(2,t);
}

 

<다른 사람의 풀이에 대한 이해>

비트 연산자

 

pow()


문자열 정렬하기 (2)

영어 대소문자로 이루어진 문자열 my_string이 매개변수로 주어질 때, my_string을 모두 소문자로 바꾸고 알파벳 순서대로 정렬한 문자열을 return 하도록 solution 함수를 완성해보세요.

  • 0 < my_string 길이 < 100
function solution(my_string) {
  const answer = my_string.toLowerCase();
  const strArry = [...answer];
  return strArry.sort().join('');
}

// 다른 사람의 풀이
function solution(my_string) {
  return my_string.toLowerCase().split('').sort().join('');
}

function solution(my_string) {
  return Array.from(my_string.toLowerCase()).sort().join('');
}

1) 문자를 toLowerCase()를 통해 소문자로 바꾸고,

2) 스프레드 문법을 통해 문자열들을 하나의 문자들로 해체하여 배열의 요소로 넣는다.

3) 메소드 sort()를 활용하여 정렬한 후

4) join('')를 사용하여 배열의 요소들 사이에 ' '을 넣어 문자열로 바꿔준다.

 

<다른 사람의 풀이에 대한 이해>

splite()

 

Array.from


참고 영상

https://youtu.be/OBgOlMi10tY?si=PCRAEi-a1x9GFi_u

댓글