Conversation
jiyeeeah
left a comment
There was a problem hiding this comment.
고생 많으셨습니다! slice랑 splice 연습까지 하시다니.. 멋지십니다!
간단한 의견만 남겨놨으니 참고해주세요 ㅎㅎ 앞으로도 화이팅입니다 😁
| for (let i = 0; i < arr.length; i++) { | ||
| for (let j = 0; j < arr.length; j++) { | ||
| if (arr[i] > arr[j]) { | ||
| answer.push(arr[i]); | ||
| } | ||
| } | ||
| } |
There was a problem hiding this comment.
이렇게 하면 시간 복잡도가 올라갈 것 같은데, 최소값을 먼저 구하고 그걸로 배열을 가공하면 복잡도가 줄어들지 않을까 생각합니다!
| if (arr[0] === 10) { | ||
| return [-1]; | ||
| } |
There was a problem hiding this comment.
왜 첫번째 배열이 10인경우 [-1]을 return하도록 하신걸까용?
문제에서 [-1]을 return하는 경우는 작은 수를 제거했을 때 빈 배열만 남는 경우인 것 같아서요!
| } | ||
| }); | ||
|
|
||
| return answer.length; |
There was a problem hiding this comment.
코드 길이를 줄이고 싶으시다면 filter라는 함수를 사용해도 좋을 것 같아요! 성능도 비슷하고!
| for (let i = 0; i < arr.length; i++) { | ||
| for (let j = 0; j < arr.length; j++) { | ||
| if (arr[i] > arr[j]) { | ||
| answer.push(arr[i]); | ||
| } | ||
| } | ||
| } |
|
|
||
| strlist.forEach((string) => answer.push(string.length)); | ||
| return answer; | ||
| } |
There was a problem hiding this comment.
이 방식도 좋지만 map 함수도 사용해보면 좋을 것 같아요! 그러면 좀 더 간결해집니다!
bona1122
left a comment
There was a problem hiding this comment.
전체적으로 다양한 배열메서드를 사용한 점이 좋습니다.
다만, 답을 구하기위해 새로운 배열을 두어 push,pop 등의 작업을 하는 것보다는 배열메서드를 최대한 활용하거나 인덱스를 활용하는 방향이 더 좋을 것 같습니다. 시간복잡도가 중요한 문제에서는 배열에서 push,pop 작업이 시간을 많이 잡아먹는 경우가 생기더라구요! 코드 전체적으로 잘 보고갑니다 👍
| function solution(array, n) { | ||
| var answer = []; | ||
|
|
||
| array.forEach((num) => { | ||
| if (num === n) { | ||
| answer.push(num); | ||
| } | ||
| }); | ||
|
|
||
| return answer.length; |
There was a problem hiding this comment.
배열을 순회하면서 특정 수의 개수를 세는 것이니까, 한번만 순회하면서 답을 구하는 건 좋은 것같아요. 그런데 정답을 도출하기위해 배열하나를 더해서 push작업을 수행하고 있는데, push도 결국 배열길이가 늘어가면 비용이 커지니까 이 문제에서는 reduce나 filter를 사용하는 것이 더 좋지 않을까 합니다. 특히 이 문제는 값하나(개수)를 도출해내는 것이니까 reduce가 제일 간단할 것 같아요
const solution = (array, n) => {
return array.reduce((acc,cur) => {
return cur === n ? ++acc : acc;
},0)
}| function solution(numbers, direction) { | ||
| if (direction === "right") { | ||
| const last = numbers.slice(-1); | ||
| const rest = numbers.slice(0, -1); | ||
| return [...last, ...rest]; | ||
| } else if (direction === "left") { | ||
| const first = numbers.slice(0, 1); | ||
| const rest = numbers.slice(1); | ||
| return [...rest, ...first]; | ||
| } | ||
| } |
There was a problem hiding this comment.
slice함수에 음수 인덱스를 사용할 수 있는 것 리마인드 하고 갑니다 :)
연습하신 것이겠지만, 맨앞,맨마지막 요소를 구하기 위해 slice를 쓰는 것 보다는 배열인덱스로 바로 접근하는게 slice메서드 호출을 줄여줘서 좋을 것 같습니다.
const solution = (numbers, direction) => {
if (direction === 'right'){
return [numbers[numbers.length - 1], ...numbers.slice(0,numbers.length - 1)];
}
else{
return [...numbers.slice(1), numbers[0]];
}
}* 배열자르기 / 기초 * 배열 원소의 길이 / 기초 * 배열 회전시키기 / 기초 * . * 배열 회전시키기 / 로직추가 / 기초 * 중복된 숫자 개수 / 기초 * 제일 작은 수 제거하기 / 중급 * 행렬의 덧셈 /중급
[배열]
📌 푼 문제
📝 간단한 풀이 과정
배열 자르기
중복된 숫자 개수
배열 회전시키기
제일 작은 수 제거하기
배열 원소의 길이
행렬의 덧셈