반응형

 

프로그래머스의 문자열 내 p와 y의 개수를 찾는 문제이다. 프로그래머스는 내용 전체를 가져다 쓰는 것을 힘들게 잡기 때문에 설명으로 대체하겠다. s에 input 데이터로 아래와 같은 값들이 들어오고, 정답으로 true나 false boolean 값을 리턴하는 문제이다. s = "pPoooyY"가 들어왔을 때 소문자 p, y와 대문자 P, Y는 같은 계산 한다. 즉 1번은 pP와 yY 가 2개씩 같으므로 TRUE를 반환하고 PyY는 P와 yY로 1 :2 이기 때문에 FALSE를 반환하다. 

 

프로그래머스

 

로직 생각

1. x의 개수와 y의 개수를 변수에 카운트를 해준다.

2. 문자열 s 를 slice 함수를 이용하여 나누어준다.

3. 반복문을 이용하여 n 즉 각각의 문자를 반복하면서 돌고 p 또는 P일 때 x의 카운트를 하나 올려주고,

4. y 또는 Y 일 때 y의 카운트를 하나 올려준다.

5. 카운트 x와 카운트 y 가 같으면  answer로 true 반환

6. 다르면 false 반환

 

function solution(s){
    let x = 0;
    let y = 0;
    let n = s.slice();
    for(let i = 0; i < n.length; i++)
    {
        if(n[i] == "p" || n[i] == "P")
        {
            x++;      
        }
        if(n[i] == "y" || n[i] == "Y")
        {
            y++;        
        }
    }
    console.log(x);
    console.log(y);
    if(y == x)
    {
        answer = true;   
    }
    else {
        answer = false;
    }
    return answer;
}

런타임이 2.5ms 가 나왔다. for문과 if 문을 많이 썼기 때문에 함수내엣 동작 시간이 좀 걸린 것으로 예상된다. 여러 내장 함수들을 이용하여 런타임을 줄여 보아야겠다.

반응형

'프로그래머스 > LV1' 카테고리의 다른 글

x만큼 간격이 있는 n개의 숫자  (0) 2023.07.08
프로그래머스 LV1 - 약수의 합  (0) 2023.07.07
반응형

 

 

function solution(x, n) {
    let answer = [];
    for(let i = 0; i < n; i++)
    {
        answer.push(x*(i+1));
    }
    return answer;
}

로직 생각 : 

정수 x = x 부터 시작해 x 씩 증가 시킴

자연수 n = 우리가 반복할 숫자

 

for 문을 이용해 자연수 n 까지 반복을 돌리고,

answer 리스트에 push를 이용해 x * ( i + 1) 을 리턴해줌 

 

x * (i  + 1) 은 i 가 0 일때 1 * x 가 되기 때문에 첫번째 x 부터

마지막 n - 1 까지 반복을 돌리기 때문에 x * (n - 1 + 1) 로 n*x 가 나오게 되므로 x 부터 시작해 x씩 증가하는 숫자 n 개를 리스트에 push를 이용하여 넣어줄 수 있다.

 

다른사람의 코드

function solution(x, n) {
    return Array(n).fill(x).map((v, i) => (i + 1) * v)
}

분석을 해보자면 리스트로 반환을 하기 때문에 Array 객체 배열에 fill() 함수를 이용해 x로 n개의 리스트 요소를 넣어준다.

그 후 map((v, i) => (i + 1) * v) / map 메서드와 콜백함수를 이용하여 v, 는 요소 i는 인덱스로 map 을 콜백함수를 이용하여  리스트의 i 번째 인덱스 값을 (i+1)  + v(현재 리스트의 값)으로 바꾸어 주어 채워주고 있다. 

 

 

반응형
반응형

정수 입력 값을 받아 정수의 약수의 합을 구하는 문제

function solution(n) {
    var answer = 0;
    for(let i = 1; i <= n; i++)
    {
        if(n % i == 0 )
        {
            answer += i;
        }
    }
    return answer;
}

for문으로 i 부터 n 까지 반복문을 돌려 주었고, 조건식 if문은 입력값 n 을 i로 나누었을 때 나누어 떨어지면 약수이기 때문에 반환되는 answer 값에 약수들을 더해주는 식이다. 

반응형

+ Recent posts