알고리즘 문제

어니·2023년 1월 2일
0

Algorithm

목록 보기
5/5
post-thumbnail

문제 | 중앙값 구하기

중앙값은 어떤 주어진 값들을 크기의 순서대로 정렬했을 때 가장 중앙에 위치하는 값을 의미합니다. 예를 들어 [1, 2, 7, 10, 11]의 중앙값은 7입니다. 정수 배열 array가 매개변수로 주어질 때, 중앙값을 return 하도록 solution 함수를 완성해보세요.


제한사항

  • array의 길이는 홀수입니다.
  • 0 < array의 길이 < 100
  • 1,000 < array의 원소 < 1,000

입출력 예

arrayresult
[1,2,7,10.11]7
[9,-1,0]0

입출력 예 설명

입출력 예 #1

  • 본문과 동일합니다.

입출력 예 #2

  • 9, -1, 0을 오름차순 정렬하면 -1, 0, 9이고 가장 중앙에 위치하는 값은 0입니다.


📓 문제 해석하기

  • 배열을 우선 오름차순으로 정렬해야한다.
  • 배열의 중간값을 구해야한다.
// 풀이

	function solution(array) {
    
    	return array.sort((a,b) => a - b)[Math.floor(array.length / 2)]
}

💡 여기서 포인트 💡

오름차순 먼저, 그 다음 배열의 중간값 구하기!

  • 먼저 오름차순으로 만들어야 값을 바로 한줄에 적을 수 있다!
	array.sort((a-b) => a - b)


// 내림차순은 b - a로 바꿔주면 된다.
	array.sort((a-b) => b - a)
  • 배열은 홀수라고 조건에 나와있으니 배열을 2로 나누면 나머지를 제외시키고 몫으로 중간값을 구할 수 있다.



문제2 | 배열 원소의 길이

문자열 배열 strlist가 매개변수로 주어집니다. strlist 각 원소의 길이를 담은 배열을 retrun하도록 solution 함수를 완성해주세요.


제한사항

  • 1 ≤ strlist 원소의 길이 ≤ 100
  • strlist는 알파벳 소문자, 대문자, 특수문자로 구성되어 있습니다.

입출력 예

strlistresult
["We", "are", "the", "world!"][2, 3, 3, 6]
["I", "Love", "Programmers."][1, 4, 12]

입출력 예 설명

입출력 예 #1

  • ["We", "are", "the", "world!"]의 각 원소의 길이인 [2, 3, 3, 6]을 return합니다.

입출력 예 #2

  • ["I", "Love", "Programmers."]의 각 원소의 길이인 [1, 4, 12]을 return합니다.


📓 문제 해석하기

  • 배열 안에 있는 요소 하나하나를 건들여야 한다.
  • 처음에는 for문으로 해결할 방법을 생각했음.
// 풀이

function solution(strlist) {
    
     let arr = [];
    
     for(let i=0; i<strlist.length; i++) {
         arr.push(strlist[i].length )
     }
    
     return arr;
}
  • 이 방법도 정답으로 나왔지만 좀 더 길이를 줄일 수 있는 방법을 생각했음!
  • 많이들 쓰는 map()를 이용하는 것!

// map()으로 풀이

function solution(strlist) {
   return strlist.map(el => el.length)
}
  • 10줄에서 3줄로 코드길이가 훨씬 짧아졌다.

💡 여기서 포인트 💡

배열이라면 for문 말고도 map(), filter() ... 를 써보자.

배열 함수를 알고있지만 for문이 익숙해서 계속 for문을 쓰게 되는 것 같다.
문제를 해석하고 map(), filter()... 메서드를 사용할 수 있는지 먼저 생각하는 습관을 기르자..!

profile
개린이

0개의 댓글