조건에 맞게 수열 변환하기1
🎈 문제설명
정수 배열 arr가 주어집니다. arr의 각 원소에 대해 값이 50보다 크거나 같은 짝수라면 2로 나누고, 50보다 작은 홀수라면 2를 곱합니다. 그 결과인 정수 배열을 return 하는 solution 함수를 완성해 주세요.
🎈 제한사항
- 1 ≤ arr의 길이 ≤ 1,000,000
- 1 ≤ arr의 원소의 값 ≤ 100
🎈 입출력 예
arr | result |
[1, 2, 3, 100, 99, 98] | [2, 2, 6, 50, 99, 49] |
🎈 입출력 예 설명
입출력 예 #1
- 1, 3은 50 미만의 홀수 이므로 2를 곱하고, 100, 98은 50 이상의 짝수이므로 2로 나눕니다.
- 나머지 값들은 변경 조건에 해당하지 않으므로 바꾸지 않습니다.
- 따라서 [2, 2, 6, 50, 99, 49]를 return 합니다.
💻 나의 풀이
map() 메서드를 사용해서 풀었다.
화살표 함수를 사용할 때 파라미터가 1개면 소괄호() 생략, return이 1줄일 때 return 생략이라는 것을 잊고 ()=>{} 이거에 익숙해져서 return을 적지 않아 계속 undefined가 떴다. 시간을 한참 잡아먹었다.
gpt한테 물어보니 map() 메서드 쓰지 말고 forEach()를 쓰라고 하더라. 롸,,?
map() 메서드로 될 것 같아서 검색 좀 하다 보니 return이 빠졌구나 싶어서 return을 넣었더니 원하던 결과가 나왔다.
이번 기회에 map(), forEach() 차이를 알아봐야겠다. 큰 차이점은 반환값 같다.
forEach() 메서드는 반환 값을 가지지 않고 기존 배열을 수정하지만 map() 메서드는 새로운 배열을 반환하며 기존 배열을 수정하지 않는다는 차이이다. 기회가 되면 두 개 메서드를 비교하는 포스팅을 해야겠다.
function solution(arr) {
var answer = [];
answer = arr.map((item) => {
if( item >= 50 && item%2 ===0) {
return item/2
} else if(item < 50 && item%2===1) {
return item*2
} else {
return item
}
})
return answer;
}
💻 다른 사람 풀이
어느 점박이 장인의 답을 가지고 와봤습니다..🌹
const solution=a=>a.map(v=>v>=50&&v%2==0?v/2:v<50&&v%2==1?v*2:v)
/*
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⡀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡠⠖⠋⠉⠉⠳⡴⠒⠒⠒⠲⠤⢤⣀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⠊⠀⠀⡴⠚⡩⠟⠓⠒⡖⠲⡄⠀⠀⠈⡆
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡞⠁⢠⠒⠾⢥⣀⣇⣚⣹⡤⡟⠀⡇⢠⠀⢠⠇
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣄⣀⠀⡇⠀⠀⠀⠀⠀⢀⡜⠁⣸⢠⠎⣰⣃
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⡍⠀⠉⠉⠛⠦⣄⠀⢀⡴⣫⠴⠋⢹⡏⡼⠁⠈⠙⢦⡀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⡽⣄⠀⠀⠀⠀⠈⠙⠻⣎⡁⠀⠀⣸⡾⠀⠀⠀⠀⣀⡹⠂
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡞⠁⠀⠈⢣⡀⠀⠀⠀⠀⠀⠀⠉⠓⠶⢟⠀⢀⡤⠖⠋⠁
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠙⠒⠦⡀⠙⠦⣀⠀⠀⠀⠀⠀⠀⢀⣴⡷⠋
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⢦⣀⠈⠓⣦⣤⣤⣤⢶⡟⠁
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢤⣤⣤⡤⠤⠤⠤⠤⣌⡉⠉⠁⠀⠀⢸⢸⠁⡠⠖⠒⠒⢒⣒⡶⣶⠤
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠲⣍⠓⠦⣄⠀⠀⠙⣆⠀⠀⠀⡞⡼⡼⢀⣠⠴⠊⢉⡤⠚⠁
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠳⣄⠈⠙⢦⡀⢸⡀⠀⢰⢣⡧⠷⣯⣤⠤⠚⠉
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠑⣲⠤⠬⠿⠧⣠⢏⡞
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡴⠚⠉⠉⢉⣳⣄⣠⠏⡞
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣴⣟⣒⣋⣉⣉⡭⠟⢡⠏⡼
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠀⠀⠀⠀⠀⠀⠀⢀⠏⣸⠁
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡞⢠⠇
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⠓⠚
*/
🌼 참고사이트
[Typescript] 함수와 메서드에 type alias 지정하는 법
함수와 메서드에 type alias 지정하는 법 함수는 두 군데 타입지정이 가능하다. 첫 번째는 파라미터 (함수로 들어오는 자료), 두 번째는 return (함수에서 나가는 자료) 함수선언식 형태의 파라미터
parsley-daily.tistory.com
JavaScript 배열 forEach()와 map()의 차이점과 예제 | 배열 메소드 비교 및 사용법 설명 | 디지털노마드
JavaScript 배열 forEach()와 map()의 차이점에 대해 알아보세요! 이 두 가지 메소드는 모두 배열 루프 처리에 사용되지만, 반환 값이 다릅니다. 예제를 통해 더 자세히 알아보세요.
vietnamlife.info
'📂 JavaScript > 코딩테스트 - 프로그래머스' 카테고리의 다른 글
[프로그래머스 JS] 조건에 맞게 수열 변환하기 3 (map(), 삼항연산자, if문) (1) | 2024.02.14 |
---|---|
[프로그래머스 JS] 정수 찾기 (단항연산자, 삼항연산자, includes()) (5) | 2024.02.05 |
[프로그래머스 JS] 이어 붙인 수 (filter(), join(),Number()) (1) | 2024.02.02 |
[프로그래머스 JS] 삼각형의 완성조건 (1), sort(), 구조분해할당, (1) | 2024.02.01 |
[프로그래머스 JS] 제곱수 판별하기 Math.sqrt(), Number.isInteger(), 나머지 연산자(%) (1) | 2024.01.31 |