[알고리즘] Algorithm Challenge_2023.3.24

우기·2023년 3월 24일
0
post-thumbnail

1️⃣ 제일 작은 수 제거하기


풀이

function solution(arr) {
let answer = 0;

if(arr.length >1){
  answer = arr.filter((el) => el !== Math.min(...arr))
}else if(arr.length = 1){
  answer = [-1]
}
return answer
}

📝 풀이 설명

  • 배열의 길이에 따른 조건문 작성
  • Math.min(...arr) 배열에서 가장 작은 값을 불러온다. ...arr로 작성한 이유는 배열을 벗기기 위함
  • 그렇게 찾은 가장 작은 숫자를 배열에서 filter를 통해 가장 작은 값만 삭제하고 배열을 입력

1️⃣ 정수 제곱근 판별


풀이

function solution(n) {
answer = -1;

for(let i=1; i<=n; i++){
  if(n/i === i){
    answer = (i+1)*(i+1)
      break
  }
}
    return answer
}

📝 풀이 설명

  • 우선 반복문을 사용해 주어진 n값 만큼 돌린다.
  • 반복문이 도는중 n값을 나눈 값과 결과 값이 같을때 (121/11=11)를 찾는다.
  • 그렇게 찾은 값에 1을 더해 제곱한다.
  • 그런데 여기서 break를 안하며 정답을 찾아도 안 멈추고 값을 찾는다. 시간 초과로 실패!!
  • answer를 -1로 설정한 이유는 정답 이외의 값들은 모두 -1이기 때문이다.

📌 Math.sqrt()

Math.sqrt()메서드는 숫자의 제곱근을 반환한다.

1️⃣ 문자열 내 p와 y의 개수


풀이

function solution(s){
let answer = 0;
let a =s.toUpperCase()
let b = a.split('')

let ppp = b.filter((el) => el === 'P')
let yyy = b.filter((el) => el === 'Y')

if(ppp.length === yyy.length){
  answer = true
}else{
  answer = false
}
    return answer
}

📝 풀이 설명

  • 주어진 문자열을 toUpperCase()을 사용해 모두 대문자로 통일한다.
  • 통일된 문자열을 split('')을 사용해 배열로 만든다.
  • filter((el)을 사용해 P값을 PPP 배열에 따로 저장 YYY도 마찬가지
  • PPP배열과 YYY배열의 길이를 비교해서 같으면 true 반환 아니면 false 반환

다른 풀이

function numPY(s){
  //함수를 완성하세요
    return s.toUpperCase().split("P").length === s.toUpperCase().split("Y").length;
}


// 아래는 테스트로 출력해 보기 위한 코드입니다.
console.log( numPY("pPoooyY") )
console.log( numPY("Pyy") )

📝 풀이 설명

  • 대문자로 통일 시키고 그 값을 s.toUpperCase().split("P") 하면 [ '', '', 'OOOYY' ]값이 나온다. Y도 동일하게 적용
  • 각각의 길이를 비교해서 답을 찾았다.

대박...

profile
개발 블로그

0개의 댓글