230331_Algorithm

majungha·2023년 4월 27일
1

알고리즘

목록 보기
13/71

오늘의 알고리즘 👍

📝 1. 음양 더하기


  • 어떤 정수들이 있습니다. 이 정수들의 절댓값을 차례대로 담은 정수 배열 absolutes와 이 정수들의 부호를 차례대로 담은 boolean 배열 signs가 매개변수로 주어집니다.
  • 실제 정수들의 합을 구하여 return 하도록 solution 함수를 완성해주세요.

▷ 입출력 예

solution([4,7,12], [true,false,true]) // 9
solution([1,2,3], [false,false,true]) // 0

▷ 내 풀이

function solution(absolutes, signs) {
  let answer = 0;
  for (let i = 0; i < absolutes.length; i++) {
    if (signs[i]) {
      answer += absolutes[i];
    } else {
      answer -= absolutes[i];
    }
  }
  return answer;
}

▷ 삼항연산자 사용 풀이

function solution(absolutes, signs) {
  let answer = 0;
  for (let i = 0; i < absolutes.length; i++) {
    answer += signs[i] ? absolutes[i] : -absolutes[i];
  }
  return answer;
}

▷ reduce 매서드 사용 풀이

function solution(absolutes, signs) {
  const answer = absolutes.reduce((acc, cur, i) => {
    console.log(acc, cur, i);
    return (
      acc + (signs[i]
        ? cur // true일 경우 양수
        : -cur) // true가 아닐 경우 음수
    );
  }, 0);
  return answer;
}

📝 2. JadenCase 문자열 만들기

  • JadenCase란 모든 단어의 첫 문자가 대문자이고, 그 외의 알파벳은 소문자인 문자열입니다.
  • 단, 첫 문자가 알파벳이 아닐 때에는 이어지는 알파벳은 소문자로 쓰면 됩니다. (첫 번째 입출력 예 참고)
  • 문자열 s가 주어졌을 때, s를 JadenCase로 바꾼 문자열을 리턴하는 함수, solution을 완성해주세요.

▷ 입출력 예

solution("3people unFollowed me") // "3people Unfollowed Me"
solution("for the last week") // "For The Last Week"

▷ 내 풀이

function solution(s) {
  let answer = "";
  str = s.toLowerCase();
  answer += str[0].toUpperCase();
  for (let i = 1; i < s.length; i++) {
    if (str[i - 1] === " ") {
      answer += str[i].toUpperCase();
    } else {
      answer += str[i];
    }
  }
  return answer;
}

▷ 수업 풀이

function solution(s) {
  let answer = '';
  s = s.toLowerCase();
  let idx = 0;
  for (let i = 0; i < s.length; i++) {
    let word = s[i];
    if (s[i] === ' ') {
      idx = 0; // 공백을 만나면 idx 0으로 초기화
    } else {
      if (idx === 0) {
        word = s[i].toUpperCase(); // 재할당 필요
      }
      idx++; // 공백이 아닌경우 idx++
    }
    answer += word;
  }
  return answer;
}

▷ map 매서드 사용 풀이

function solution(s) {
  const answer = s
    .toLowerCase()
    .split(' ')
    .map((word) => {
      return word === ''
        ? word
        : // : word[0].toUpperCase() + word.slice(1)
          word[0].toUpperCase() + word.substr(1);
    });
  return answer.join(' ');
}

출처: 프로그래머스
출처: 코드캠프

profile
개발자 블로그 / 항상 겸손한 자세로 배우면서 성장하자 할 수 있다!

0개의 댓글