210623 TIL 프로그래머스 코테연습

JadenCase 문자열 만들기

JadenCase란 모든 단어의 첫 문자가 대문자이고, 그 외의 알파벳은 소문자인 문자열입니다. 문자열 s가 주어졌을 때, s를 JadenCase로 바꾼 문자열을 리턴하는 함수, solution을 완성해주세요.

  • s는 길이 1 이상인 문자열입니다.
  • s는 알파벳과 공백문자(" ")로 이루어져 있습니다.
  • 첫 문자가 영문이 아닐때에는 이어지는 영문은 소문자로 씁니다.

"3people unFollowed me" 👉 "3people Unfollowed Me"
"for the last week" 👉 "For The Last Week"

function solution(s) {
    var arr = [];
    let split = s.split(" ")
    
    split.forEach(word=>{
        let str = ""
        let a = word.slice(0,1).toUpperCase()
        let b = word.slice(1).toLowerCase()
        str += a
        str += b
        arr.push(str)
    })
    return arr.join(" ");
}

👉 풀이과정

  • 단어를 띄어쓰기 단위로 쪼개기
  • 첫문자atoUpperCase(), 그 외 문자들b는 `toLowerCase()
  • 문자들을 arr에 집어넣고 .join(" ")으로 다시 띄어쓰기 해줌.

👉 다른사람 풀이

function solution(s) {
    return s.split(" ").map(v => v.charAt(0).toUpperCase() + v.substring(1).toLowerCase()).join(" ");
}

map과 charAt을 이용해 푼 과정.
charAt() = 문자열에서 특정 인덱스에 위치하는 유니코드 단일문자를 반환.

하샤드 수

양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하샤드 수인지 아닌지 검사하는 함수, solution을 완성해주세요.

x는 1 이상, 10000 이하인 정수입니다.

10 true
12 true
11 false
13 false

function solution(x) {
    var answer;
    let num = 0;
    let str = x.toString()
    for(let i=0; i<str.length;i++){
        num += +str[i];
    }
    
    x % num === 0 ? answer=true : answer=false;
    return answer;
}

👉 풀이과정

  • num를 str으로 변환
  • for문을 사용해 각각의 숫자들을 다 더한 값을 num에 할당.
  • x를 num로 나눈 숫자가 0으로 나누어 떨어진다면 true, 아니면 false를 할당함.

👉 다른사람 풀이

    let num = x;
    let sum = 0;
    do {
        sum += x%10;
        x = Math.floor(x/10);
    } while (x>0);

    return !(num%sum);

형변환을 시켜서 하면 근소하지만 느리게 나온다. 숫자형 그대로 쓰면 빠르게 나왔음.

좋은 웹페이지 즐겨찾기