코딩테스트 18일차
문자열안에 문자열
문자열 str1, str2가 매개변수로 주어집니다. str1 안에 str2가 있다면 1을 없다면 2를 return하도록 solution 함수를 완성해주세요.
function solution(str1, str2) {
if (str1.includes(str2)) { // str1 안에 str2가 포함되어 있는지 확인
return 1;
} else {
return 2;
}
}
✏️풀이
str1.includes(str2)를 사용하여 str1 안에 str2가 포함되어 있는지 확인합니다. includes 메서드는 문자열에 특정 부분 문자열이 포함되어 있는지를 확인하는 메서드입니다. 만약 str1에 str2가 포함되어 있다면 true를 반환하고, 그렇지 않다면 false를 반환합니다.
조건문(if)을 사용하여 str1.includes(str2)의 결과를 확인합니다. 만약 str1에 str2가 포함되어 있다면 조건은 true가 되어 if 블록 안의 코드가 실행됩니다. 여기서는 return 1;을 통해 1을 반환합니다.
조건문의 조건이 false인 경우(str1에 str2가 포함되어 있지 않은 경우) else 블록 안의 코드가 실행됩니다. 여기서는 return 2;를 통해 2를 반환합니다.
제곱수 판별하기
어떤 자연수를 제곱했을 때 나오는 정수를 제곱수라고 합니다. 정수 n이 매개변수로 주어질 때, n이 제곱수라면 1을 아니라면 2를 return하도록 solution 함수를 완성해주세요.
function solution(n) {
var sqrt = Math.sqrt(n); // n의 제곱근을 구함
if (Number.isInteger(sqrt)) { // 제곱근이 정수인지 확인
return 1;
} else {
return 2;
}
}
✏️풀이
Math.sqrt(n)를 사용하여 n의 제곱근을 계산합니다. Math.sqrt 함수는 주어진 수의 제곱근을 반환하는 함수입니다. 예를 들어, Math.sqrt(144)의 결과는 12가 됩니다.
Number.isInteger(sqrt)를 사용하여 sqrt가 정수인지 확인합니다. Number.isInteger 메서드는 주어진 값이 정수인지를 확인하는 메서드입니다. sqrt가 정수라면(Number.isInteger(sqrt)의 결과가 true라면) if 블록 안의 코드가 실행됩니다.
if 블록 안의 코드에서는 1을 반환합니다. 즉, n이 제곱수라면 1을 반환합니다.
if 조건이 false인 경우(sqrt가 정수가 아닌 경우) else 블록 안의 코드가 실행됩니다. 여기서는 2를 반환합니다. 즉, n이 제곱수가 아니라면 2를 반환합니다.
세균 증식
어떤 세균은 1시간에 두배만큼 증식한다고 합니다. 처음 세균의 마리수 n과 경과한 시간 t가 매개변수로 주어질 때 t시간 후 세균의 수를 return하도록 solution 함수를 완성해주세요.
function solution(n, t) {
var answer = n; // 초기 세균의 수를 저장할 answer 변수 선언
for (var i = 0; i < t; i++) {
answer *= 2; // 시간마다 세균의 수를 두 배로 증식
}
return answer;
}
✏️풀이
answer 변수를 선언하고 초기 세균의 수인 n을 저장합니다.
for 반복문을 사용하여 0부터 t-1까지 반복합니다. i는 현재 경과한 시간을 의미합니다.
각 반복에서 answer 변수를 2배로 증식시킵니다. 이는 세균이 1시간마다 두 배로 증식한다는 조건에 따른 것입니다.
반복문이 종료되면 answer에는 t시간 후의 세균의 수가 저장됩니다.
answer를 반환하여 t시간 후의 세균의 수를 출력합니다.
문자열 정렬하기 (2)
영어 대소문자로 이루어진 문자열 my_string이 매개변수로 주어질 때, my_string을 모두 소문자로 바꾸고 알파벳 순서대로 정렬한 문자열을 return 하도록 solution 함수를 완성해보세요.
function solution(my_string) {
var lowerCaseString = my_string.toLowerCase(); // 문자열을 소문자로 변환
var sortedString = lowerCaseString.split('').sort().join(''); // 알파벳 순으로 정렬
return sortedString;
}
✏️풀이
toLowerCase() 메서드를 사용하여 my_string의 모든 문자를 소문자로 변환합니다. 이를 lowerCaseString 변수에 저장합니다.
split('') 함수를 사용하여 lowerCaseString을 문자 단위로 분리합니다. 즉, 문자열을 배열로 변환합니다. 배열의 각 요소는 문자열의 각 문자가 됩니다.
sort() 함수를 사용하여 배열을 알파벳 순서로 정렬합니다. 기본적으로 정렬은 유니코드 코드 포인트 값을 기준으로 이루어집니다. 따라서 알파벳 순서로 정렬됩니다.
join('') 함수를 사용하여 정렬된 배열을 다시 문자열로 합칩니다. join('') 함수는 배열의 모든 요소를 연결하여 하나의 문자열로 만듭니다. 여기서는 빈 문자열을 구분자로 사용하여 요소들을 이어붙입니다.
정렬된 문자열을 sortedString 변수에 저장합니다.
sortedString을 반환하여 알파벳 순으로 정렬된 문자열을 출력합니다.