[프로그래머스 JS] 조건에 맞게 수열 변환하기 1 (map(), 화살표함수)

반응형

조건에 맞게 수열 변환하기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

 

반응형
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유