Skip to content

Comments

[yulrang] 25.01.02#5

Merged
JooKangsan merged 8 commits intomainfrom
LeeYoul
Jan 9, 2025
Merged

[yulrang] 25.01.02#5
JooKangsan merged 8 commits intomainfrom
LeeYoul

Conversation

@yulrang
Copy link
Collaborator

@yulrang yulrang commented Jan 2, 2025

저는 뒤로 갈수록 모르는게 많아서 초반에 달렸습니다 ^ㅠ
오늘 알바때문에 문제를 미리 풀어뒀었어요!!!

[배열]

(3) 시간 복잡도

  • 임의 접근 : 인덱스를 통해 배열의 요소에 접근할 때 O(1)의 시간복잡도를 갖습니다.
  • 선형 검색 : 정렬되지 않은 배열에서 특정한 요소를 검색하는 경우, 배열의 모든 요소를 처음부터 검색해야 하므로 O(n)의 시간 복잡도를 가집니다.
function linearSearch(arr, target) {
	for(let i=0; i<arr.length; i++) {
		if(arr[i] === target) return i
	}
	return false;
}

📌 푼 문제

  1. 배열 자르기 | https://school.programmers.co.kr/learn/courses/30/lessons/120833

  2. 배열 원소의 길이 | https://school.programmers.co.kr/learn/courses/30/lessons/120854

  3. 배열 회전시키기 | https://school.programmers.co.kr/learn/courses/30/lessons/120844

  4. 중복된 숫자 개수 | https://school.programmers.co.kr/learn/courses/30/lessons/120583

  5. 제일 작은 수 제거하기 | https://school.programmers.co.kr/learn/courses/30/lessons/12935

  6. 행렬의 덧셈 | https://school.programmers.co.kr/learn/courses/30/lessons/12950

  7. 나누어 떨어지는 숫자 배열 | https://school.programmers.co.kr/learn/courses/30/lessons/12910


📝 간단한 풀이 과정

1. 배열 자르기

  • 간단한 문제접근법/풀이 설명
    인덱스 1부터 인덱스 2까지 반복문을 돌려 정답 배열에 넣었습니다.
function solution(numbers, num1, num2) {
  var answer = [];
  
  for(let i = num1; i <= num2; i++){
      answer.push(numbers[i]);
  }
  return answer;
}

2. 배열 원소의 길이

  • 간단한 문제접근법/풀이 설명
    배열 0번째 요소부터 마지막 요소까지 반복문을 돌리고,
    정답 배열에 각 요소 문자열의 길이를 담았습니다.
function solution(strlist) {
  var answer = [];
  
  for(let i=0; i<strlist.length; i++){
      answer.push(strlist[i].length);    
  }
  
  return answer;
}

3. 배열 회전시키기

  • 간단한 문제접근법/풀이 설명
    shift, unshift 메소드를 까먹어서 반복문을 이용해 구현했습니다.
function solution(numbers, direction) {
  var answer = [];
  if (direction === "left") {
      for(let i=1; i<numbers.length; i++) {
          answer.push(numbers[i])
      }
      answer.push(numbers[0]);
  }
  if (direction === "right") {
      answer.push(numbers[numbers.length-1]);
      for(let i=0; i<numbers.length-1; i++) {
          answer.push(numbers[i])
      }
  }
  return answer;
}

4. 중복된 숫자 개수

  • 간단한 문제접근법/풀이 설명
    filter 메소드를 사용하여 n과 같은 요소들의 배열을 만든 후, 해당 배열의 문자열의 길이를 저장하여 반환했습니다.
function solution(array, n) {
  var answer = 0;
  var filteredArr = array.filter((el) => el === n);
  answer = filteredArr.length;
  
  return answer;
}

5. 제일 작은 수 제거하기

  • 간단한 문제접근법/풀이 설명
    스프레드 문법을 활용하여 최소값을 찾은 후, 필터 메소드를 사용해 최소값이 아닌 원소들만 뽑아내어 반환했습니다.
function solution(arr) {
  if (arr.length === 1) {
      return [-1];
  }
  
  return arr.filter((el) => el !== Math.min(...arr));
}

6. 행렬의 덧셈

  • 간단한 문제접근법/풀이 설명
    Array 생성자를 사용하여 배열을 초기화 한 후, 반복문을 사용하여 이차원 배열의 덧셈을 구현했습니다.
function solution(arr1, arr2) {
  var answer = new Array(arr1.length);
  
  for(let i=0; i<arr1.length; i++) {
      answer[i] = new Array(arr1[i].length);
      for(let j=0; j<arr1[i].length; j++) {
          answer[i][j] = arr1[i][j] + arr2[i][j];
      }
  }
  
  return answer;
}

7. 나누어 떨어지는 숫자 배열

  • 간단한 문제접근법/풀이 설명
    forEach 메소드를 사용하여 각각의 요소들에 대하여 나머지연산식 조건에 해당하는 경우 정답배열에 푸시되도록 했습니다.
    이후 sort 메소드를 사용하여 오름차순 정렬했습니다.

compareFunction(a, b)이 0보다 큰 경우, b를 a보다 낮은 인덱스로 소트합니다.

참고 : https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/sort

function solution(arr, divisor) {
  var answer = [];
  
  arr.forEach((el) => {
      if(el % divisor === 0) answer.push(el);
  })
  answer.sort((a,b) => a-b);
  
  if(answer.length === 0) return [-1];
  
  return answer;
}

@yulrang yulrang self-assigned this Jan 2, 2025
@JooKangsan JooKangsan requested review from oh-chaeyeon and unn04012 and removed request for oh-chaeyeon and unn04012 January 2, 2025 12:25
Copy link
Collaborator

@JooKangsan JooKangsan left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이번주도수고하셨습니다!

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

풀이 잘 봤습니다!! slice 메서드를 사용해서 풀어보시는 것도 좋을 것 같아요!

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이거는 push말고 다른 메서드들도 사용해 보시면 좋을 것 같아요!!

Comment on lines +4 to +6
arr.forEach((el) => {
if(el % divisor === 0) answer.push(el);
})
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이거는 filter 를 사용해보는걸추천드려요!

Copy link
Collaborator

@Moonjonghoo Moonjonghoo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

강산님이 리뷰를 다해두셔서 메서드를 활용하는 풀이도 좋을거같아요!

@JooKangsan JooKangsan merged commit 0b8eff6 into main Jan 9, 2025
7 checks passed
bona1122 pushed a commit to bona1122/AlgorithmStudy that referenced this pull request Jan 9, 2025
* Slice array / 기초

* Length of array items / 기초

* Shift array / 기초

* Number of duplicated item / 기초

* Remove lowest number / 중급

* Sum of matrix / 중급

* Multiple number / 중급

* Chore: 폴더명 변경경
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants