조건에 맞게 수열 변환하기 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로 변경한다.
'코딩테스트 > 프로그래머스 0단계 - 기초 트레이닝' 카테고리의 다른 글
프로그래머스 0단계 - 카운트 다운 / 홀수 vs 짝수 (0) | 2024.04.03 |
---|---|
프로그래머스 0단계 - 배열 만들기 1 / n개 간격의 원소들 (0) | 2024.04.02 |
프로그래머스 0단계 - 문자열 섞기, 문자열로 변환 (0) | 2024.03.30 |
프로그래머스 0단계 - 소문자로 바꾸기, 대문자로 바꾸기 (0) | 2024.03.30 |
프로그래머스 0단계 - 두 수의 합, 홀짝에 따른 다른 값 반환 (0) | 2024.03.30 |
댓글