[JS] 삼각형 판별, 연필 개수

2021. 6. 29. 18:43개발공부/알고리즘

길이가 서로 다른 A, B, C 세 개의 막대 길이가 주어지면 이 세 막대로 삼각형을 만들 수 있 으면 “YES"를 출력하고, 만들 수 없으면 ”NO"를 출력한다.

삼각형 판별하기

삼각형이 만들어지려면 max값이 나머지 두변의 길이의합보다 작아야한다.(같아도 안됨)

처음엔 바보처럼 풀었다😨

<!-- 길이가 서로 다른 A, B, C 세 개의 막대 길이가 주어지면 이 세 막대로 삼각형을 만들 수 있 으면 "YES"를 출력하고, 만들 수 없으면 "NO"를 출력한다. -->

<html>
    <head>
        <meta charset="UTF-8">
        <title>출력결과</title>
    </head>
    <body>
        <script>
            function solution(a, b, c) {
                let answer, max;
                if (a > b) max = a;
                else max = b;
                if (c > max) max = c;

                if ((max = a) || ((b+c) > max))
                    answer = "YES";
                else answer = "NO"
                if ((max = b) || ((a+c) > max))
                    answer = "YES";
                else answer = "NO";
                if ((max = c) || ((a+b) > max))
                    answer = "YES";
                else answer = "NO";
                return answer;
            }

            console.log(solution(13, 33, 17));
        </script>
    </body>
</html>

단순하게 풀었을뿐더러 그냥 아주 틀린 코드다🤔

 

sum변수를 만들어줬어야했다.

function solution(a, b, c) {
                let answer, max;
                if (a > b) max = a;
                else max = b;
                if (c > max) max = c;

                let sum = (a + b + c);
                if ((sum - max) > max)
                    answer = "YES";
                else answer = "NO";
                return answer;
            }

            console.log(solution(6, 7, 11));

또는 answer값을 처음부터 YES로 넣어주고, 틀렸을때만 NO로 바꿔줘도된다.

 

연필 개수

연필 1 다스는 12자루입니다. 학생 1인당 연필을 1자루씩 나누어 준다고 할 때 N명이 학생수 를 입력하면 필요한 연필의 다스 수를 계산하는 프로그램을 작성하세요.

 

<html>
    <head>
        <meta charset="UTF-8">
        <title>출력결과</title>
    </head>
    <body>
        <script>
            function solution(n) {
                let answer;
                let pack = 12;
                if (n%pack==0) answer = n/pack;
                else answer = (parseInt(n/pack) + 1);

                return answer;
            }

            console.log(solution(178));
        </script>
    </body>
</html>

1다스 12로 나누어떨어지면 사람수에서 12로 나눈 값을 반환하고, 그렇지않다면 나눈 몫에 +1을 해서 반환하였다.

또는 나눈값이 나눠 떨어지지않고 소숫점이 있다면 ceil을 사용하여 올림시킨 값을 반환시킬수도있다.

function solution(n) {
	let answer = Math.ceil(n/12);
    
    return answer;
}

Math 내장객체

 

Math - JavaScript | MDN

Math는 수학적인 상수와 함수를 위한 속성과 메서드를 가진 내장 객체입니다.

developer.mozilla.org

 

 

문제 출처: 인프런 강의 <<자바스크립트 알고리즘 문제풀이(코딩테스트 대비)>> by 김태원 강사님