TIL 2-3

황태규·2023년 5월 25일
0

TIL

목록 보기
4/4

나의 첫 코딩테스트

문제

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

제한사항
문자열 s의 길이 : 50 이하의 자연수
문자열 s는 알파벳으로만 이루어져 있습니다.

입출력 예
s answer
"pPoooyY" true
"Pyy" false

처음 화면 봣을떄 JS로 설정을 안해가지고 C++에서 JS코드로 왜 실행이 안되지 하고 고민이엇다가 JS설정을 늦게 보고 다시풀었다...

function solution(s){
    var answer = true;

    // [실행] 버튼을 누르면 출력 값을 볼 수 있습니다.
    console.log('Hello Javascript')

    return answer;
}

기본 코드이다
s에 조건이 들어가니 s에 "pPoooyY", "Pyy"가 입력되며
answer를 통해 결과 출력이다.
answer 기본은 true로 설정되어잇다

우선 문제의 조건을 요약하면
1. 개수를 비교해 같으면 true 다르면 false
2. 둘다 없으면 항상 true - 이말은 0이면 true으로 출력
3. 대소문자를 구별하지 않는다.
이는
1. for문 사용하여 비교(if문)
2. toUpperCase 사용하여 대문자로 전환하여 통일
을 이용하여 풀 수 있다는걸 알 수 있다

문제를 풀어보면

function solution(s){
    var answer = true;
        s = s.toUpperCase();
        let num =0;
    for (let i =0; i<s.length; i++){
        if(s[i] === 'P') {
            num++;
        }
        if(s[i] === 'Y') {
            num--;
        }
    }
if (num === 0) {
        answer = true;
    } else {
        answer = false;
    }
    return answer;
}

s = s.toUpperCase(); 를 추가하여 대문자로 통일
비교하기 위한 num선언
for 문으로 s의 값에 P가 있다면 num에 1을 더하고 Y가 있으면 1을 뺀다
i가 s의 문자 갯수만큼 반복 - let i =0; i<s.length; i++
그래서 num 값이 0이면 answer는 true를 0이 아니면 false를 출력한다

여기서 맨위 var answer = true; 와 if (num === 0) {
answer = true; 는 둘다 같은 의미이므로

function solution(s){
       s = s.toUpperCase();
       let num =0;
   for (let i =0; i<s.length; i++){
       if(s[i] === 'P') {
           num++;
       }
       if(s[i] === 'Y') {
           num--;
       }
   }
if (num === 0) {
       answer = true;
   } else {
       answer = false;
   }
   return answer;
}

로 바꿀 수 있으며 또는 이미 answr는 true로 선언한것을 이용하여

function solution(s){
    let answer = true;
        s = s.toUpperCase();
        let num =0;
    for (let i =0; i<s.length; i++){
        if(s[i] === 'P') {
            num++;
        }
        if(s[i] === 'Y') {
            num--;
        }
    }
if (num != 0) {
        answer = false;
    }
    return answer;
}

0이 아니면 false로만 선언하게 바꿔도 된다

profile
응애

0개의 댓글