본문 바로가기
코딩테스트/프로그래머스 0단계 - 기초 트레이닝

프로그래머스 0단계 - 조건에 맞게 수열 변환하기 3 / A 강조하기

by 학습하는 청년 2024. 4. 1.

조건에 맞게 수열 변환하기 3

정수 배열 arr와 자연수 k가 주어집니다. 만약 k가 홀수라면 arr의 모든 원소에 k를 곱하고, k가 짝수라면 arr의 모든 원소에 k를 더합니다. 이러한 변환을 마친 후의 arr를 return 하는 solution 함수를 완성해 주세요.

  • 1 ≤ arr의 길이 ≤ 1,000,000
  • 1 ≤ arr의 원소의 값 ≤ 100
  • 1 ≤ k ≤ 100
function solution(arr, k) {
  const newArr = [];
  for(let i = 0; i < arr.length; i++) {
    if(k % 2 !== 0) newArr.push(arr[i] * k);
    if(k % 2 === 0) newArr.push(arr[i] + k);
  }
  return newArr;
}

// 다른 사람의 풀이
const solution = (arr, k) => arr.map(v => k % 2 ? v * k : v + k)

1) 새로운 배열을 만든 다음

2) 조건에 따라, arr의 값(arr[i])를 넣어준다.

 

<다른 사람의 풀이에 대한 이해>

1) map()은 새로운 배열을 만든다.

2) 그에 따른 조건식 k % 2를 한 값은 1 또는 0이므로 truthy 값 또는 falsy 값이 나온다.

3) 이를 삼항 연산자로 작성한다.


A 강조하기

문자열 myString이 주어집니다. myString에서 알파벳 "a"가 등장하면 전부 "A"로 변환하고, "A"가 아닌 모든 대문자 알파벳은 소문자 알파벳으로 변환하여 return 하는 solution 함수를 완성하세요.

  • 1 ≤ myString의 길이 ≤ 20
    myString은 알파벳으로 이루어진 문자열입니다.
function solution(myString) {
  const answer = myString.split('');
  for(let i = 0; i < myString.length; i++) {
    if(answer[i] === 'a') answer[i] = answer[i].toUpperCase();
    else if(answer[i] !== 'A') answer[i] = answer[i].toLowerCase();
  }
  return answer.join('');
}

// 다른 사람의 풀이
const solution=s=>s.toLowerCase().replaceAll('a','A');

1) 문자열은 불변성을 갖고 있으므로, 문자 하나하나를 바꿀 수 없다.

2) 그래서, 문자열을 split('')를 사용하여 배열로 변경하였다.

3) 배열의 요소를 인덱스 0번부터 돌면서

4) 요소의 값 중 'a'와 같다면, 대문자로 바꾼다.

5) 4)번에서 소문자 a를 대문자 A로 바꿨으므로, 대문자 A외의 요소들을 소문자로 바꾼다.

6) 이렇게 만들어진 배열을 다시 join('')을 통해 문자열로 바꾼다.

 

<다른 사람의 풀이에 대한 이해>

1) 단순하게, 문자열 모두를 toLowerCase()를 사용해 소문자로 바꾼다.

2) replaceAll('a', 'A')를 통해 소문자 a를 대문자 A로 변경한다.

댓글