“ 당신이 6개월 이상 한 번도 보지 않은 코드는 다른 사람이 다시 만드는 게 훨씬 더 나을 수 있다. ”
코딩테스트 입문 Day 18 문자열, 수학, 조건문, 정렬
출처 : https://programmers.co.kr/
문자열안에 문자열
문제
문자열 str1, str2가 매개변수로 주어집니다. str1 안에 str2가 있다면 1을 없다면 2를 return하도록 solution 함수를 완성해주세요.
제한사항
- 1 ≤ str1의 길이 ≤ 100
- 1 ≤ str2의 길이 ≤ 100
- 문자열은 알파벳 대문자, 소문자, 숫자로 구성되어 있습니다.
입출력 예
str1 | str2 | result |
"ab6CDE443fgh22iJKlmn1o" | "6CD" | 1 |
"ppprrrogrammers" | "pppp" | 2 |
"AbcAbcA" | "AAA" | 2 |
입출력 예 설명
입출력 예 #1
- "ab6CDE443fgh22iJKlmn1o" str1에 str2가 존재하므로 1을 return합니다.
입출력 예 #2
- "ppprrrogrammers" str1에 str2가 없으므로 2를 return합니다.
입출력 예 #3
- "AbcAbcA" str1에 str2가 없으므로 2를 return합니다.
solution.js
function solution(str1, str2) {
if (str1.includes(str2)) {
return 1;
} else {
return 2;
}
}
- str1.includes(str2)를 사용하여 str1에 str2가 포함되어 있는지 확인합니다.
- 만약 str1에 str2가 포함되어 있다면, 즉 조건문이 참이라면 함수는 1을 반환합니다.
- 그렇지 않은 경우, 즉 str1에 str2가 포함되어 있지 않다면 함수는 2를 반환합니다.
제곱수 판별하기
문제
어떤 자연수를 제곱했을 때 나오는 정수를 제곱수라고 합니다. 정수 n이 매개변수로 주어질 때, n이 제곱수라면 1을 아니라면 2를 return하도록 solution 함수를 완성해주세요.
제한사항
- 1 ≤ n ≤ 1,000,000
입출력 예
n | result |
144 | 1 |
876 | 2 |
입출력 예 설명
입출력 예 #1
- 144는 12의 제곱이므로 제곱수입니다. 따라서 1을 return합니다.
입출력 예 #2
- 976은 제곱수가 아닙니다. 따라서 2를 return합니다
solution.js
function solution(n) {
if (Math.sqrt(n) % 1 === 0) {
return 1;
} else {
return 2;
}
}
- Math.sqrt(n)을 사용하여 n의 제곱근을 계산합니다.
- % 연산자를 사용하여 제곱근의 소수 부분을 확인합니다. % 1은 제곱근을 1로 나누었을 때의 나머지를 의미합니다.
- === 연산자를 사용하여 나머지가 0인지 확인합니다. 즉, Math.sqrt(n)의 제곱근이 정수인지 확인합니다.
- 만약 나머지가 0이라면, n의 제곱근이 정수이므로 1을 반환합니다.
- 그렇지 않으면, n의 제곱근이 정수가 아니므로 2를 반환합니다.
이 함수는 n이 제곱수(양의 정수의 제곱)인지 아닌지를 판별하는 데 사용될 수 있습니다. 예를 들어, solution(4)를 호출하면 제곱근이 정수이므로 1이 반환됩니다. 반대로, solution(5)를 호출하면 제곱근이 정수가 아니므로 2가 반환됩니다.
세균 증식
문제
어떤 세균은 1시간에 두배만큼 증식한다고 합니다. 처음 세균의 마리수 n과 경과한 시간 t가 매개변수로 주어질 때 t시간 후 세균의 수를 return하도록 solution 함수를 완성해주세요.
제한사항
- 1 ≤ n ≤ 10
- 1 ≤ t ≤ 15
입출력 예
n | t | result |
2 | 10 | 2048 |
7 | 15 | 229,376 |
입출력 예 설명
입출력 예 #1
- 처음엔 2마리, 1시간 후엔 4마리, 2시간 후엔 8마리, ..., 10시간 후엔 2048마리가 됩니다. 따라서 2048을 return합니다.
입출력 예 #2
- 처음엔 7마리, 1시간 후엔 14마리, 2시간 후엔 28마리, ..., 15시간 후엔 229376마리가 됩니다. 따라서 229,376을 return합니다.
solution.js
function solution(n, t) {
var answer = n * Math.pow(2, t);
return answer;
}
- n에 Math.pow(2, t)를 곱하여 초기 세균의 수에 2를 t번 곱합니다. Math.pow(2, t)는 2의 t 제곱을 계산하는 함수입니다.
- 결과값을 answer 변수에 할당합니다.
- answer를 반환합니다.
이 함수는 세균이 세대별로 번식하는 상황에서 n이 초기 세균의 수이고, t가 몇 번째 세대까지 번식할지를 나타내는 지수로 사용될 수 있습니다. 예를 들어, solution(2, 3)를 호출하면 초기 세균의 수인 2에 2를 3번 곱한 값인 16이 반환됩니다. 이는 3세대까지 세균이 번식한 후의 세균의 수를 나타냅니다.
문자열 정렬하기 (2)
문제
영어 대소문자로 이루어진 문자열 my_string이 매개변수로 주어질 때, my_string을 모두 소문자로 바꾸고 알파벳 순서대로 정렬한 문자열을 return 하도록 solution 함수를 완성해보세요.
제한사항
- 0 < my_string 길이 < 100
입출력 예
my_string | result |
"Bcad" | "abcd" |
"heLLo" | "ehllo" |
"Python" | "hnopty" |
입출력 예 설명
입출력 예 #1
- "Bcad"를 모두 소문자로 바꾸면 "bcad"이고 이를 알파벳 순으로 정렬하면 "abcd"입니다.
입출력 예 #2
- "heLLo"를 모두 소문자로 바꾸면 "hello"이고 이를 알파벳 순으로 정렬하면 "ehllo"입니다.
입출력 예 #3
- "Python"를 모두 소문자로 바꾸면 "python"이고 이를 알파벳 순으로 정렬하면 "hnopty"입니다.
solution.js
function solution(my_string) {
var lowercaseString = my_string.toLowerCase();
var sortedString = lowercaseString.split('').sort().join('');
return sortedString;
}
- 함수 내부에서는 Math.sqrt(n)을 통해 n의 제곱근을 구하고, 이 값을 1로 나눈 나머지를 확인합니다. 만약 나머지가 0이라면, 즉 n의 제곱근이 정수라면 if문 안에 있는 return 1; 문장이 실행됩니다. 이는 제곱근이 정수인 경우를 나타내며, 1을 반환합니다.
- 그렇지 않은 경우, 즉 제곱근이 정수가 아닌 경우 else문 안에 있는 return 2; 문장이 실행됩니다. 이는 제곱근이 정수가 아닌 경우를 나타내며, 2를 반환합니다.