Algorithm

[백준] 상근날드 ( JavaScript 풀이 )

동띠기 2020. 3. 19. 13:12
728x90

 

위와 같은 문제입니다.

 

저는 이런 문제를 풀때 먼저 손으로 풀어보는 타입입니다.

 

조건은 위와 같이

 

1. 입력은 5번 받는다.

2. 1,2,3 입력된 것은 버거의 가격 4,5 번에 입력된 것은 음료의 가격이다

3. 1,2,3 번의 가격중 가장낮은 가격과 4,5번의 가격중 가장낮은 가격을 더해 -50원을 뺀다.

4. 출력한다

 

라는 조건입니다.

 

그래서 저의 풀이는 2가지 였습니다.

처음방법은 좀 무식(?) 하게 풀었습니다.

 

1. 일단 배열과 변수를 선언합니다

var setMenu = ['상덕버거','중덕버거','하덕버거','콜라','사이다']; // 입력받은 배열선언
var price = new Array(5); // 각각의 가격을 담을 배열 선언
var minSum = 0; // 버거의 최소가를 담을 변수선언
var minDrk = 0; // 음료의 최소가를 담을 변수선언

2. 반복하며 price 배열에 가격을 담는다.

for(var i = 0 ; i < setMenu.length; i++){
    price[i] = parseInt(prompt(setMenu[i] + "의 가격을 입력하세요")); // prompt는 문자열 반환임으로 정수형으로 형변환
}

3. 무식(?)하게 버거는 버거끼리 음료는 음료끼리 비교한다.

// 버거 비교
        if(price[0] < price[1] && price[0] < price[2]){
            minSum = price[0];    
        }
        else if(price[1] < price[0] && price[1] < price[2]){
            minSum = price[1];
        }
        else{
            minSum = price[2];
        }

// 음료비교
        if(price[3] < price[4]){
            minDrk = price[3];
        }
        else{
            minDrk = price[4];
        }

4. 출력한다 ( 로그찍었습니다 )

console.log((minSum + minDrk) - 50);

 

아직 실력이 미숙하여 이게 오류가 없을지는 모르겠으나 , 예시자료를 넣어봤을 땐 이상없이 출력되었습니다.

조금더 쉽게 풀이할 수 없을까 하던 중  Math 함수가 생각이 나서 더 쉽게 풀어보았습니다.

2번까지는 동일하지만 3번이 다릅니다.

 

minSum = Math.min(price[0],price[1],price[2]);
minDrk = Math.min(price[3],price[4]);

minSum 변수에는 배열의 0 ~ 2번째 사이의 숫자중 가장 낮은 배열의 값을 담고

minDrk 변수에도 배열의 3~4번째 사이의 숫자중 가장 낮은 배열의 값을 담았습니다.

 

그러고 동일하게 출력시 결과는 완벽히 같았습니다.

 

 

<!-- 주의 사항 -->

 

아직 실력이 높지않아 풀이가 틀렸을 수 있습니다.

코드에 대한 오류나 리뷰 및 더 깔끔한 코드, 더 실용적인 코드를 댓글로 알려주시면 정말 감사하겠습니다.

728x90

'Algorithm' 카테고리의 다른 글

[백준] 평균점수 ( JavaScript 풀이 )  (0) 2020.03.19