728x90
■ 옷가게 할인 받기
- 구매가격에 따른 할인가가 다르고 그렇기 때문에 지불가격도 다른 문제이다.
- 매개변수 price가 다르게 적용되기 때문에 함수를 나눠서 식을 작성해야 한다.
- 지불할 금액에 대한 price와 할인가에 대한 price로 나눌수 있다.
- 할인가를 알아야 지불가격을 알수 있기때문에 할인가격에 대한 식을 먼저 작성했다.
- 구매가격에따른 할인가는 주어진 조건을 이용해 if-else문으로 작성할 수 있다.
- 지불할 금액은 원가인 price에서 할인가격을 빼주고 이 금액을 Math.floor 함수를 이용해
- 소수점 이하를 버린 정수로 반환해준다.
■ 아이스 아메리카노
- 가지고 있는 금액에 따른 아메리카노 최대 구매수와 잔돈을 구하는 문제이다.
- 우선 가지고 있는 금액을 조건으로 걸어주고, 최대 아메리카노 잔수와 남은 돈에 대한 식을 작성해준다.
- 최대로라는 조건이 붙었기 때문에 Math.floor 함수를 이용해서 money를 한잔의 아메리카노 가격으로 나눠준다.
- 남은 돈은 money에서 최대 아메리카노 잔수 * 한잔가격을 빼준다.
- 배열에 담아 반환해준다.
■ 배열 뒤집기
- 위 코든는 반나절의 고민끝에 나온 코드이고..
- 처음에 작성한 코드는 아래와 같다...
- 아래코드는 실행시간이 10초가 넘어서 사용할 수 없었다...

function solution(num_list) {
// 거꾸로 뒤집은 배열 정의
const reversedList = [];
// 반복문 사용
for(let i = num_list.length-1; i => 0; i--){
// 재배열한 원소를 다시 넣어줘야한다. => push 사용
reversedList.push(num_list[i]);
}
return reversedList;
}
- 처음에 한 생각은 num_list[0] 값이 배열의 가장 끝 원소가 되고, 가장 끝 원소는 가장 처음의 값이 되니까
- 반복문이용해 감소시키고자 했는데 이렇게하니까 실행시간이 너무 오래걸린다..
- 그래서 사용한 방식이 합계를 구할때처럼 배열을 반으로 쪼갠 뒤 앞쪽과 뒤쪽의 원소를 바꾸는 방법이다.
- 배열의 length는 변하지 않고, 반복문을 사용해 배열의 길이를 반으로 나눈 수만큼 돌려주는데 배열의 수를 정수로 바꾸기 위해 Math.floor 함수를 사용해준다.
- 임의의 배열 temp에 num_list[i]를 담아준다.
- num_list[length-1-i] 는 리스트의 끝에서 i 번째 위치를 나타낸다. 이 식을 num_list[i]에 넣는다는 것은
- 리스트의 i 번째의 값과 리스트 끝의 i 번째 위치에 있는 값을 서로 바꾼다는 것을 의미한다.
- 그리고 그값을 임의의 배열 temp에 넣어준뒤 반환해준다.
■ 문자열 뒤집기
- 배열 뒤집기에서 맨 처음 고안한 방법을 다시 적용시켜 보았다.
- 구하고자하는 값인 reversed_string을 빈 문자열로 초기화해준다.
- 반복문을 사용해 감소시킬것이기 때문에 시작을 끝값인 length-1로 시작한다.
- my_string의 총값을 reversed_string에 넣어준다.
- 어째서인지 이 코드는 실행시간이 초과되지 않았다?!
- 왜일까..?
728x90
'개발 이모저모 > 프로그래머스 알고리즘' 카테고리의 다른 글
[Algorithm] 프로그래머스 레벨[0] 풀이 - (Javascript)(6) (0) | 2023.03.27 |
---|---|
[Algorithm] 프로그래머스 레벨[0] 풀이 - (Javascript)(5) (0) | 2023.03.22 |
[Algorithm] 프로그래머스 레벨[0] 풀이 - (Javascript)(3) (0) | 2023.03.22 |
[Algorithm] 프로그래머스 레벨[0] 풀이 - (Javascript)(2) (0) | 2023.02.20 |
[Algorithm] 프로그래머스 레벨[0] 풀이 - (Javascript)(1) (0) | 2023.02.11 |