[Js] 프로그래머스 prac9

이성규·2022년 11월 23일
0

✅ 자리수 더하기

  • 문제 설명
    자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요.
    예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다.

  • 제한사항
    N의 범위 : 100,000,000 이하의 자연수

  • 입출력 예

N	 answer
123	   6
987	   24
  • 입출력 예 설명
    9 + 8 + 7 = 24이므로 24를 return 하면 됩니다.

🔷 풀이

function solution(n)
{	// toString()을 이용하여 자연수를 문자열로 바꿔주고, split("")로 배열 만들기
    // 만들어진 배열을 map()로 이용하여 10진수로 바꿔준 다음 array 선언
    let array = n.toString().split("").map(x => parseInt(x))

    return array.reduce((acc,cur) => acc + cur, 0)
    // 위 배열의 요소들을 반복, 누적해서 더하는 방식이 필요하기 때문에 reduce()를 이용하여 처리
}

🔶 toString(), map(), parseInt(), reduce() 다시 공부해보자!


function solution(n) {
    let result = [];
    let arr = String(n).split("").reverse().map((data) => Number(data))
    for(let i = 0; i < arr.length; i++) {
        result[i] = Number(arr[i])
    }
    return arr;
}
  • 최초로 받는 n은 숫자열 상태인데 이 숫자열을 배열로 쪼개기 위해서는 문자열로 변환 후 split를 써야한다. 따라서 새로운 arr를 선언하여 String으로 문자열변환 후 split으로 배열생성 하여 문제의 요구사항대로 순서를 뒤집기 위해 reverse해준 뒤 map을 활용하여 다시 숫자형태로 바꾸어 주었다.

✅ 문자열 내 p와 y의 개수

  • 문제 설명
    대문자와 소문자가 섞여있는 문자열 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

🔷 풀이

const solution = (s) => {
  let answer = true;
  let inP = 0; // P에대한 초기값 선언
  let inY = 0; // Y에대한 초기값 선언
  let string = s.toLowerCase(); // 소문자로 변경하기
  for (let i = 0; i < s.length; i++) { // 반복문 실행
      // 조건 수렴 : 소문자로 변경된 문자열에 p가 포함되어 있는 경우 대문자P에대해 반복문 실행
      if (string[i].includes('p')) inP++; 
      // 조건 수렴 :  소문자로 변경된 문자열에 소문자 y가 포함되어 있는 경우 대문자 Y에 대해 반복문 실행
    else if (string[i].includes('y')) inY++;
  }
  if (inP !== inY) answer = false // P,Y가 같지 않다면 false 리턴

  return answer;
}
profile
개발자를 위한 발걸음

0개의 댓글