관리 메뉴

공부기록용

JavaScript 문법 종합 1주차(숙제) 본문

📚강의록📚/스파르타)Javascript

JavaScript 문법 종합 1주차(숙제)

과부하가즈아 2023. 5. 23. 20:44

Q. 대문자와 소문자가 섞여있는 문자열 s가 주어집니다. s에 'p'의 개수와 'y'의 개수를 비교해 같으면 True, 다르면 False를 return 하는 solution를 완성하세요. 'p', 'y' 모두 하나도 없는 경우는 항상 True를 리턴합니다. 단, 개수를 비교할 때 대문자와 소문자는 구별하지 않습니다. 

// 정답

function soultion(s) {
    var answer = true;

    // 1. 대문자로 통일(대, 소문자에 관계없이 p, y의 갯수만 보기 때문에 통일시켜줌)
    s = s.toUpperCase();

    // 2. for문을 통한 문자열의 요소 하나씩을 비교
    // 2-1. p, y 비교
    var num = 0;

    for (var i = 0; i < s.length; i++) {
        // 여기에서 비교
        if (s[i] === 'P') {
            num++;
        }

        if (s[i] === 'Y') {
            num--;
        }
    }

    // 3. 개수 체크(p와 y의 개수가 같은지를 체크)
    if (num === 0) {
        answer = true;
    } else {
        answer = false;
    }

    return answer;
}

var str1 = "pPoooyY";
var str2 = "Pyy";

console.log(soultion(str1)); // true
// 이해한경로

function soultion(s) {
    var answer = true;

    // 1. 대문자로 통일(대, 소문자에 관계없이 p, y의 갯수만 보기 때문에 통일시켜줌)
    s = s.toUpperCase(); // 문자열 s의 소문자들이 대문자로 변경

    // 2. for문을 통한 문자열의 요소 하나하나씩을 비교
    // 2-1. p, y 비교해가면서 개수를 확인해야함
    var num = 0;
    
    // i는 0부터, 문자열s의 길이까지만_6or2일것, 
    for (var i = 0; i < s.length; i++) {
        // 여기에서 비교
        // 문자열s안의 i번째 요소가 P라면
        if (s[i] === 'P') {
            num++;
        }
  	// 문자열s안의 i번째 요소가 Y라면
        if (s[i] === 'Y') {
            num--;
        }
    }

    // 3. 개수 체크(p와 y의 개수가 같은지를 체크)
    // num이 0이면 P, Y갯수가 같은것이므로 answer은 true
    if (num === 0) {
        answer = true;
    } else {   // num이 0아니면 P, Y갯수가 다른것이므로 answer은 false
        answer = false;
    }
    // 그리곤 그 answer을 반환하라
    return answer;
}

var str1 = "pPoooyY"; 
// pPoooyY -> PPOOYY
// 0번째i=P=num++=1, 1번째i=P=num++=2,
// 2번째i=O=조건없음=2, 3번째i=O=조건없음=2, 4번째i=O=조건없음=2,
// 5번째i=Y=num--=1, 6번째i=Y=num--=0
// num === true
console.log(soultion(str1)); // true

var str2 = "Pyy";
// Pyy -> PYY
// 0번째i=P=num++=1, 1번째i=Y=num--=0, 2번째i=Y=num--=-1
// num =-1 이므로 false 반환
console.log(soultion(str2)); // false

 

 

Q. 어떤 정수들이 있습니다. 이 정수들의 절댓값을 차례대로 담은 정수 배열 absolutes와 이 정수들의 부호를 차례대로 담은 불리언 배열 signs가 매개변수로 주어집니다. 실제 정수들의 합을 구하여 return 하도록 solution 함수를 완성해주세요.

function solution(absolutes, signs) {
    // 1. return해야하는 answer 생성
    var answer = 0;

    // 2. 두 배열을 비교해 가면서 값을 더하거나 뺴줄 것
    // 2-1. 두 배열은 크기가 같음
    for (var i = 0; i < absolutes.length; i++) {
        // 부호(+, -)에 따른 처리
        if (signs[i] === true) {
            // 값이 true인 경우(양수)
            answer = answer + absolutes[i];
        } else if (signs[i] === false) {
            // 값이 false인 경우(음수)
            answer = answer - absolutes[i];
        }
    }

    // 3. 출력
    return answer;
}

var absolutes = [4, 7, 12];
var signs = [true, false, true];

console.log(solution(absolutes, signs)); // 9

// var absolutes = [1,2,3];
// var signs =  [false,false,true];
Comments