[20230208_프로그래머스 알고리즘_Lv.1]

YunTrollpark·2023년 2월 8일
0

1. 자릿수 더하기

문제 설명

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

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

function solution(n)
{
  const string = n.toString()
  const array = [...string]
  const numberArray = array.map((item) => Number(item))
  return numberArray.reduce((a,b)=> a+b)
}

// 해설
// 1. 먼저 문자열로 변환
// 2. 그 후 나머지 연산자로 문자열을 문자 각각의 배열로 변경
// 3. 생성된 배열을 순회하면서 다시 숫자로 변경
// 4. return으로 배열의 모든 숫자를 더해줌!
❗️ n + ""으로 메서드를 쓰지 않고 간단하게 문자열로 만들 수 있다...!!!

2. 자연수 뒤집어 배열로 만들기

문제 설명

자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요. 예를들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다.

제한 조건
n은 10,000,000,000이하인 자연수입니다.

function solution(n) {
return [...(n + '')].reverse().map((item)=>Number(item))
}
// 해설
// 1. 스프레드 연산자 안에 문자열로 만들어줌, 그리고 reverse함수로 역전 후 반복문 돌면서 다시 숫자로 변경!

3. 문자열 내 p와 y의 개수

문제 설명

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

예를 들어 s가 "pPoooyY"면 true를 return하고 "Pyy"라면 false를 return합니다.

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

function solution(s) {
    return (s.toUpperCase().split('P').length-1) === (s.toUpperCase().split('Y').length-1)  ? true : false 
}

// 해설
// 이거 오래 걸린 이유가 조건을 제대로 못봄...ㅠㅜ 대,소문자 관계없이 해야함!!!
// 1. 먼저 받은 문자열을 전부 대문자로 변환
// 2. split으로 해당 문자열을 여러개로 나눈 후 해당 문자열의 길이를 구함
// (1을 제외하는 이유는 배열을 반환할때 해당 문자 기준으로 잘려서 문자가 포함 안되는 원소가 들어가서!)
// 3. 그리고 그 길이를 비교해줘서 같으면 true 다르면 false를 반환!

오늘도 힌트 안보고 머리 쥐어짜서 해결했다... 아자아자...!!!

profile
코딩으로 세상에 이야기하는 개발자

0개의 댓글