let output = computeWhenDouble(7);
console.log(output); // --> 11
output = computeWhenDouble(10);
console.log(output); // --> 8
function computeWhenDouble(interestRate) {
let rate = 1 + interestRate/100 // 이율
let M = 1 // 돈
let year = 0 // 걸리는 햇수
while( M < 2){ // 돈이 2배 될 때까지
M = M*rate // 이율을 곱한 복리를 계산
year++ // 연도를 1씩 증가시킨다
}
return year
}
let output = firstCharacter('hello world');
console.log(output); // --> "hw"
output = firstCharacter(
'The community at Code States might be the biggest asset'
);
console.log(output); // --> "TcaCSmbtba"
function firstCharacter(str) {
if(str==''){ // 받은게 빈문자열이면 빈문자열 리턴
return ''
}
let A="" // 빈문자열 A 선언
let B= str.split(' ') // 받은 문자열을 띄어쓰기 기준으로 나눈다
for(let i=0; i<B.length; i++){ // 문자절의 갯수만큼 루프를 돌린다
A = A + B[i][0] // 빈문자열에 각 문자절의 첫번째 글자를 삽입
}
return A
}
let output = firstReverse('codestates');
console.log(output); // "setatsedoc"
output = firstReverse('I love codestates');
console.log(output); // "setatsedoc evol I"
function firstReverse(str) {
return str.split('').reverse().join('')
}
/// join은 배열의 모든 요소를 하나로 합친다. 인자가 공백이면 단어사이에 ,를 두고 ''일경우 사이에 아무문자 없이 연결됨.
/// split은 ''일경우 한글자를 기준으로 나누고, ' '일 경우 띄어쓰기를 기준으로 나눈다
let output1 = letterCapitalize('hello world');
console.log(output1); // "Hello World"
let output2 = letterCapitalize('javascript is sexy ');
console.log(output2); // "Javascript Is Sexy "
function letterCapitalize(str) {
let words=str.split(' ') // 받은 문자열을 띄어쓰기 기준으로 나눔
for(i=0; i<words.length; i++){ // 문자절만큼 루프 진행
if(words[i].length >0){ // 문자절이 있으면
words[i]=words[i][0].toUpperCase() + words[i].substr(1) // 순회하는 문자절의 첫번째 글자를 대문자로 만들고 나머지 부분을 합친다
}
} str = words.join(' ') // 바꾼 문자절을 다시 붙인다
return str
}
const arr = [
['make', 'Ford'],
['model', 'Mustang'],
['year', '1964'],
['make', 'Bill'],
];
let output = convertListToObject(arr);
console.log(output) // -->
{
make : 'Ford'
model : 'Mustang',
year : '1964'
}
function convertListToObject(arr) {
let result = {} // 빈 객체 선언
for(let i=0; i<arr.length; i++){ // 배열 길이만큼 순회
if(arr[i].length>0 && result[[arr[i][0]]] === undefined ){ // 배열의 인자가 비지 않았고 순회하는 인자의 속성값이 result에 정의되지 않았다면
result[arr[i][0]] = arr[i][1] // 배열을 객체로 만든다
}
}return result
}
let output = convertDoubleSpaceToSingle('string with double spaces');
console.log(output); // --> "string with double spaces"
function convertDoubleSpaceToSingle(str) {
let result = "" // 빈 문자열 result 선언
let before = "" // 빈 문자열 before 선언
for(let i=0; i<str.length; i++){ // str의 길이만큼 for 루프 실행 case 1 before가 문자, 현재도 문자
if(before !== ' ' || str[i] !== ' '){ // before가 공백이 아니었거나, 현재가 공백이 아닐경우 --- case 2 before가 공백이거나 현재가 문자일 경우
result = result + str[i] // result에 현재 문자를 추가 case 3 before가 문자이거나 현재가 공백일 경우에 실행 가능
}
before = str[i] // before는 현재 문자가 된다
}
return result // result를 반환
}
'a'로 시작해서 'b'로 끝나는 길이 5의 문자열
'b'로 시작해서 'a'로 끝나는 길이 5의 문자열
let output = ABCheck('lane Borrowed');
console.log(output); // --> true
function ABCheck(str) {
if(str === ''){
return false // 빈문자열 받았으면 false 리턴
}
str = str.toLowerCase() // 문자열을 소문자로 변환
for(let i=4; i<str.length; i++){ // 5번째 문자부터 문자열 끝까지 순회
if((str[i] === 'a' && str[i-4] === 'b')|| { i번째 문자가 a이고 i와 5만큼 차이나는 문자가 b이거나
(str[i] === 'b' && str[i-4] === 'a')) { i번째 문자가 b이고 i와 5만큼 차이나는 문자가 a 이면
return true // 트루 리턴
}
}
return false
}
let output = insertDash('454793');
console.log(output); // --> 4547-9-3
function insertDash(str) {
let result = str[0] // result는 문자열의 첫번째
for(let i=1; i<str.length; i++){ // 첫번째 문자부터 문자열 끝까지 순회
if(Number(str[i-1]) %2 ===1 && Number(str[i]) %2 ===1){ // 문자열을 숫자형으로 바꾼 i-1번째 숫자를 2로 나눴을 때 나머지가 1이고 그 뒤의 숫자도 나머지가 잇다면
result = result + '-' // - 기호를 붙여준다
}
result = result + str[i] // 차례로 숫자들을 검사한 후 이어붙인다
}
return result
}
let output = removeExtremes(['a', 'b', 'c', 'def']);
console.log(output); // --> ['a', 'b']
output = removeExtremes(['where', 'is', 'the', 'longest', 'word']);
console.log(output); // --> ['where', 'the', 'word',]
function removeExtremes(arr) {
let short = 20 // 최대 길이는 20
let long = 0
let shortidx = 0
let longidx = 0
for(let i=0; i<arr.length; i++){ // 배열을 순회
if(arr[i].length >= long) { // long보다 이상인 인자의 길이는
long = arr[i].length // 곧 long이 된다
longidx = i // 그 때의 인덱스 번호를 longidx라 한다
} // 상향식 접근
if(arr[i].length <= short) { // short보다 이하인 인자의 길이는
short = arr[i].length // 곧 short가 된다
shortidx = i // 그 때의 인덱스 번호를 shortidx라 한다
} // 하향식 접근
}
let result = []
for(let i=0; i<arr.length; i++){ // 배열을 순회
if(i !== longidx && i !==shortidx){ // 인덱스 번호가 long도 아니고 short도 아니면
result.push(arr[i]) // 그 인자를 빈배열 result에 푸쉬
}
}
return result
}
let output = findBugInApples([['A'], ['B']]);
console.log(output); //[1, 0]
output = findBugInApples([
['A', 'A', 'A', 'A', 'A'],
['A', 'B', 'A', 'A', 'A'],
['A', 'A', 'A', 'A', 'A'],
['A', 'A', 'A', 'A', 'A'],
['A', 'A', 'A', 'A', 'A'],
]);
console.log(output); //[1, 1]
function findBugInApples(arr) {
for (let i = 0; i < arr.length; i += 1) { /// arr의 길이만큼 for 루프를 실행 arr.length = 5
for (let j = 0; j < arr[i].length; j += 1) { /// arr[i]의 길이만큼 루프를 실행. arr[0].length = 5
if (arr[i][j] === 'B') { ///arr[i]번째 배열의 [j]번째 인자를 돌며 'B'를 탐색한다
return [i, j];
}
}
}
}
let input = [
//
'hello',
'wolrd',
];
let output = readVertically(input);
console.log(output); // --> 'hweolllrod'
input = [
//
'hi',
'wolrd',
];
output = readVertically(input);
console.log(output); // --> 'hwiolrd'
function readVertically(arr) {
let temp = []; // temp = 빈배열
for (let i = 0; i < arr.length; i++) { // i가 arr 갯수보다 작으면 i ++, arr.length = 2
for (let j = 0; j < arr[i].length; j++) { // j가 arr[i].length 즉, arr의 i번째 인자의 글자수보다 작으면 j ++
if (temp.length === j) { // temp.length 즉, temp 배열의 갯수가 j와 같으면
temp.push(arr[i][j]); // temp에 arr[i][j] 즉, arr의 i번째 인자의 j번째 글자를 push한다
} else {
temp[j] = temp[j] + arr[i][j]; // temp[j] 즉, temp의 j번째 글자에 arr[i][j] 즉, arr의 i번째 인자의 j번째 글자를 추가한다
}
} //for(let i=0)일 때 for(let j)는 5번의 루프를 반복한다. 즉 temp에는 [hello]가 담긴다
} // for(let i=1)일 때 for (let j)는 다시 5번의 루프를 반복하지만 else의 형식에 담겨 hello의 각 단어 사이에 추가된다
let result = ''; // 빈 문자열 result를 선언
for (let i = 0; i < temp.length; i++) { // temp.length, temp 배열의 갯수만큼 for 루프를 실행
result = result + temp[i]; // result에 temp[i]를 추가하여 누적
}
return result;
}
let output = superIncreasing([1, 3, 6, 13, 54]);
console.log(output); // --> true
output = superIncreasing([1, 3, 5, 9]);
console.log(output); // --> false
function superIncreasing(arr) {
// TODO: 여기에 코드를 작성합니다.
let sum=arr[0]
for(let i=1; i<arr.length; i++){
if(arr[i] <= sum){ // 배열을 순회하는데 인자가 sum 이하라면
return false // false 리턴
}
sum = sum + arr[i] // sum에 현재 인자를 더하여 누적시킨다
}
return true // 아니면 끝까지 돌고 true 리턴
}