프로그래머스에서 요즘은 생각보다 빠르게 통과를 하고 있다. 매우 고무적이라고 생각한다.
names라는 이름을 담은 배열을 주고 result로 0번째와 5번째 10번째 이순서의 이름을 담은 배열을 반환하라는 문제였다.
나는 곧장 map을 사용하는 것을 사용했고,
0번째, 5번째 10번쨰 이걸 어떻게 할까 생각하다가 i==0이거나 i%5==0을 생각했다.
그래서 map에서 쓰기 편하게 삼항연산자를 쓰기로 했고, answer =[]로 빈 배열을 생성했으니 map에서는 push를 써서 answer에 넣는게 간편하겠다고 생각했다.
그래서 아래와 같이
names.map((a,i)=>i==0||i%5==0 ? answer.push(names[i]))
를 만들었다.
삼항 연산자 인데 삼항연산자 마무리를 하지 못해서 에러가 떳다.
그래서
names.map((a,i)=>i==0||i%5==0 ? answer.push(names[i]:a))
를 해서 통과할 수 있었다.
다른 사람들은 어떻게 썻을까 궁금했는데
아주 맨 첫번째에
names.filter((_, i) => !(i % 5))
이런 코드가 있었다?
왜 i%5가 아닐때? 를 반환하는 코드인데 성공을 한건지 궁금했다.
names.filter((v, idx) => idx % 5 === 0);
이렇게 i%5==0을 한 것도 있는데 위의 조건고 아래의 조건이 뭐가 다른건지 궁금했다.
쳇gpt에게 물어보니 두개 다 5의 배수가 되는 것을 충족하는 것을 반환하는 코드라고 한다. 그저 표현하는 방식이 다른 것 뿐이라고..
일단 chatgpt의 말로는
!(i % 5): 이 부분은 인덱스(i)를 5로 나눈 나머지가 0이 아닌 경우를 의미합니다. !는 논리 부정(NOT) 연산자이므로 !(i % 5)는 인덱스가 5의 배수인 경우를 참(true)으로, 그렇지 않은 경우를 거짓(false)으로 만듭니다.
라고 합니다 !
'자기개발 > TIL' 카테고리의 다른 글
js 간단한 식 계산하기 (0) | 2023.08.03 |
---|---|
두개의 배열로 filter 사용하기 (0) | 2023.08.01 |
홀짝에 따라 다른 값 반환하기 js (0) | 2023.07.28 |
js 문자열 바꿔서 찾 (0) | 2023.07.27 |
o떼기 js (1) | 2023.07.27 |