본문 바로가기

verdantjuly/코딩테스트

프로그래머스 스터디 A반 20230530 Day 3

728x90

 

나의 풀이

pass 나머지 구하기 https://verdantjuly.tistory.com/74

pass 중앙값 구하기 https://verdantjuly.tistory.com/116

fail    최빈값 구하기 https://verdantjuly.tistory.com/80

pass 짝수는 싫어요 https://verdantjuly.tistory.com/117

 

인상적인 풀이

// sort 이용 하지 않고 중간 값 구하기
function solution(array) {
  let arrayCnt = 0;
  let newArray = [];
  while (arrayCnt < array.length) {
    let minNumber = 1000;
    //배열에서 최소값을 찾는 것
    let cnt = 0;
    while (cnt < array.length) {
      if (minNumber > array[cnt]) {
        minNumber = array[cnt];
      }
      cnt = cnt + 1;
    }
    //minNumber = 최소값
    newArray.push(minNumber);
    let cnt2 = 0;
    while (cnt2 < array.length) {
      if (minNumber === array[cnt2]) {
        array[cnt2] = 1000;
        break;
      }
      cnt2 = cnt2 + 1;
    }
    arrayCnt = arrayCnt + 1;
  }
  return newArray[Math.floor(array.length / 2)]
}
//1.정렬
//1-1. 배열 중 가장 작은 값 찾기
//1-2. 찾으면 새 배열에 넣기
//1-3 원래 배열에 찾은 값은 지운다
//1-4 만약 원래 배열 길이만큼 반복했으면 끝낸다 아니면 1-1로
//2. 가운데 값 꺼내기 (편집됨)
//중앙값
let array = [1,5,3,8,4];
for(let i=1; i<array.length-1; i++){
    let idx=i;
    for(let j=i+1; j<array.length; j++){
        if(array[idx]>array[j])idx=j;
        console.log(‘array[idx] : ’,array[idx]);
        console.log(‘array[j] : ‘,array[j]);
        console.log(‘-’.repeat(40));
    }
    let tmp=array[i];
    array[i]=array[idx];
    array[idx]=tmp;
}
//최빈값
let array = [1,2,3,3,3,4];
function solution(array) {
    let m = new Map();
    array.forEach(v=>{
        if(m.has(v)){
            m.set(v,m.get(v)+1);
        }else{
            m.set(v,1);
        }
    });
    let tmp = 0;
    let answer = 0;
    m.forEach((v,k)=>{
        if(v>tmp){
            answer=k;
            tmp=v;
        }else if(v==tmp){
            answer=-1;
        }
    })
    return answer;
}
solution(array);