모닝 알고리즘 #01 - 세 수 중 최솟값, 삼각형 판별하기, 연필 개수, 1부터 N까지 합, 최솟값 구하기

조아라·2024년 10월 28일
0
post-thumbnail

세 수 중 최솟값 🔢

function solution(a, b, c){
                let answer;
                if(a<b) {
					answer=a;
                } else {
					answer=b;
                } if(c<answer) {
				answer=c; 
				}
                return answer;
			}

            console.log(solution(6, 5, 11)); //5

입출력 예시대로 6, 5, 11로 예시를 해보자면
만약에 a<b보다 작으면 a 반환, 그게 아니면 b 반환인데 6<5이므로 ➡️ 5가 answer에 담긴다.
그 뒤에 5 < 11가 성립하므로 반환되는 값은 5❗❗❗❗

삼각형 판별하기 🔺

function solution(a, b, c){
                let answer="YES", max;
                let total=a+b+c;
  
                if(a>b) {
					max=a;
                } else { max=b;
                } if(c>max) {
					max=c;
                } if(total-max<=max) {
					answer="NO"; 
                }
                return answer;
            }
			console.log(solution(6, 7, 11)) //YES
            console.log(solution(13, 33, 17)); //NO

일단 삼각형을 만들 수 있다가 성립하려면을 먼저 봐야 한다.
가장 긴 변의 값이 짧은 두 변의 길이 보다 커야 삼각형이 만들어진다를 알아야한다🤔

짧은 막대 둘의 합이 가장 긴 변 보다 작거나 같다 식을 세워주고
➡️ a>b에서 a가 더 작아서 else문에서 max=7,11>7이므로 max=11이다.
➡️ 24 - 11 = 13 이므로 "YES" 반환

13, 33, 17은
➡️ 13 + 33 + 17 - 33 <= 33가 성립하지 않으므로 "NO"반환

연필 개수 ✏️

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

            console.log(solution(178));

만약에 25명에게 나눠준다면 12개 * 2 이고 나머지가 1이기때문에,
한명에게 안 줄 수 없으니 답은 3다스 일 것이다.

나누기 한 몫에다가 + 1을 해줘도 좋을 거고, 소수점이 있으면 Math.ceil()을 사용해서 올림을 해주는 방법도 있다.

1부터 n까지 합 구하기➕

function solution(n){
                let answer=0;
                for(let i=1; i<=n; i++){
                    answer=answer+i;
                }
                return answer;
            }

            console.log(solution(10));

이건 반복문을 이용해주면 된다.
1부터 n까지의 합이기때문에 for(let i=1; i<=n; i++)라고 적어 줄 수 있고,
answer가 나오면 거기에 또 다시 반복문을 돌아서 i를 n까지 더해준다.

answer = answer + i
1 = 0 + 1
3 = 1 + 2
6 = 3 + 3
10 = 6 + 4
이런식으로 i = 10이 될 때 까지 쭈욱 도는 방법이다.

최솟값 구하기 🤔

 function solution(arr){         
                let answer, min=Number.MAX_SAFE_INTEGER;
                for(let i=0; i<arr.length; i++){
                    if(arr[i]<min) min=arr[i];
                }
                answer=min;
                return answer;

            }

            let arr=[5, 7, 1, 3, 2, 9, 11];
            console.log(solution(arr));

min=Number.MAX_SAFE_INTEGER 최솟값을 처음에 제일 큰 값으로 초기화 시켜놓는다.
💡 그럼 무조건 첫번째 숫자는 최솟값으로 들어가게 된다.

for문을 도는데 0부터 배열의 길이까지 돌게 하고(6번까지 돌것이다)
if문으로 만약에 i라는 값이 지금까지 구한 최솟값보다 작더라 ➡️ 그럼 i가 최솟값

아니면 min=arr[0]을 줘도 된다.

profile
끄적 끄적 배운 걸 적습니다 / FRONT-END STUDY VELOG

0개의 댓글