JS 100제 알고리즘 - 13 ~ 16번 문제 풀이

히징·2022년 6월 14일
0
post-thumbnail

제코베 JS 100제 알고리즘 문제를 풀며 정리중입니다

문제13 : 몇 번째 행성인가요?

우리 태양계를 이루고 있는 행성은 수성, 금성, 지구, 화성, 목성, 토성, 천왕성, 해왕성으로 총 8개 입니다. 저희는 우리 태양계의 n번째 행성이 무엇인지 알고 싶습니다.

입력으로 행성의 순서를 나타내는 숫자 n이 입력됩니다.
출력으로 그 순서에 해당하는 행성의 이름을 출력해 주세요.

예를들어 1이 입력되면, 첫번째 행성인 수성이 출력됩니다.

const planet = ["수성", "금성", "지구", "화성", "목성", "토성", "천왕성", "혜왕성"]
function planetSelect(num) {
    console.log(planet[num - 1])
    if (num > planet.length) {
        console.log(`태양계의 ${num}번째 행성은 없습니다.`)
    }
}

planetSelect(1)

처음에는 if문을 추가하지 않았는데, 8 이상의 값이 나오면 undefind가 출력되기 때문에 예외처리를 해줘야 겠다고 생각하여 추가하였다.

문제14 : 3의 배수 인가요?

영희는 친구와 게임을 하고 있습니다. 서로 돌아가며 랜덤으로 숫자를 하나 말하고 그게 3의 배수이면 박수를 치고 아니면 그 숫자를 그대로 말하는 게임입니다.

입력으로 랜덤한 숫자 n이 주어집니다.

만약 그 수가 3의 배수라면 '짝'이라는 글자를, 3의 배수가 아니라면 n을 그대로 출력해 주세요.

function play(num){
    if (num % 3 === 0 && num > 0){
        console.log("짝👏🏻")
    }
    if (num <= 0) {
        console.log("양수로 입력하세요")

    } else {
        console.log(num)
    }
}

play(3)

이렇게 함수를 통해서 직접 함수에 입력값을 적어넣도록 구현하였는데, 아래 15번 문제를 풀고나니 입력값을 받는 문제들을 promts를 활용하여 해결해볼 수 있을 것 같다.

문제15 : 자기소개

신학기가 시작되고, 아이들이 돌아가면서 자기소개를 하기로 했습니다.

만약 입력으로 김다정이라는 이름이 주어지면 "안녕하세요. 저는 김다정입니다."라고 출력하게
해주세요.

function sayHello(name) {
    console.log(`안녕하세요. 저는 ${name}입니다.`)
}

sayHello("김희진")

이렇게 작성하고나니, 뭔가 이상했다. 일단 sayHello에 ""없이 적으면 입력이 안되는점, 함수를 사용한게 아닌 직접 입력받으려면 어떻게 해야할까 생각하다 prompt() 함수를 통해 구현가능했다! alert창을 통해서 입력값을 받는다는 생각은 못했는데 이런 방법도 있었구낭

let 이름 = prompt('이름을 입력하세요');
console.log(`안녕하세요. 저는 ${이름}입니다.`);

문제16 : 로꾸거

문장이 입력되면 거꾸로 출력하는 프로그램을 만들어 봅시다.

입력 : 거꾸로
출력 : 로꾸거

  • 1번째 풀이
let input =  prompt("문장을 입력하세요")
let inputArray = [...input]
let replaceInputArray = []

for (let i = 0; i < input.length ; i++){
    replaceInputArray.push(inputArray.pop())
}

let result = replaceInputArray.join("")
console.log(result)

변수선언을 너무 많이 한 것 같다 좀더 간결하게 할 수는 없을까..? 하다가 이전에 배운 reverse 함수가 떠올랐다. JS 배운지 얼마안됐는데 배웠던 함수들을 계속 까먹어서 비효율적인 코드가 완성됐다 ㅠㅠ 다시 정주행 해야지. 그래도 알고리즘을 풀며 다시 기억나고있어 다행이당

  • 2번째 풀이
let inputArray2 =  [...prompt("문장을 입력하세요")]
let changeResult = inputArray2.reverse().join("")
console.log(changeResult)

reverse함수를 사용하고, 처음 input과 inputArray도 한 코드로 묶어 더 간결한 코드를 작성하였다.

  • 3번째 풀이
let Str = prompt(); console.log(`${Str.split('').reverse().join('')}`)

이렇게 전개구문 없이 split로 하니까 더 깔끔한 것 같다!

사용된 함수 총 정리

join()

  • 배열을 문자열로 합치는 함수

split()

  • 문자열을 분할하는 함수
  • string.split( separator, limit )
    separator = 분할의 기준
    limit = 최대 분할 개수 ( 값을 정하지 않으면 전체를 다 분할)

reverse()

  • 배열을 거꾸로 뒤집는 함수

prompt()

  • 문자열을 입력할 때 사용하는 함수
  • 숫자를 입력 받아야 하는 경우는 문자열로 입력 받은 뒤 parsInt등을 이용하여 변환
  • 첫번째 매개변수는 입력 창에서 띄워줄 메시지
  • 두번째 매개변수는 입력 부분의 기본 값
profile
FE DEVELOPER 👩🏻‍💻🤍

0개의 댓글