본문 바로가기

프로그래머스

[코딩테스트] 230720_옷가게 할인받기, 피자 나눠 먹기(2), 피자 나눠 먹기(3), 문자열 뒤집기, 배열원소의 길이, 배열 자르기, 문자열안에 문자열

728x90

 

 


옷가게 할인받기

 

function solution(price) {
    var sale = 0;
    if(price >= 100000 && price < 300000){
        sale = price * 0.05
        return Math.floor(price-sale)  
    }
    else if(price >= 300000 && price < 500000){
        sale = price * 0.1
        return Math.floor(price - sale)
    }
    else if(price >= 500000){
        sale = price * 0.2
        return Math.floor(price - sale)
    }
    return price
    }

 

🤯 테스트 13, 14 오류

 사실 문제를 읽고 쉬운 문제라고 생각해서 막힘없이 if문으로 접근을 했는데 문제설명만 간단히 보고 제한사항을 제대로 보지 않은 탓인지 코드실행 결과가 제대로 나와 제출을 했더니 오류 투성이였다...

 도대체 뭐가 문제인건지 모르겠어서 다시 문제를 보니 문제 설명에서 일정금액 이상 사면 할인을 해준다고 했었다. 이상이라는 건 해당금액을 포함해서라는 얘기인데 부등호를 price > 100000 이런식으로 적으니 당연히 조건에 맞지 않아 오류가 뜨는 것이라고 생각을 했고 해당 부분을 수정하였다.

 그런데도 여전히 테스트 13. 14는 오류로 남아있었고, 질문하기에 들어가니 제한 사항에 " 소수점 이하를 버린 정수를 return합니다. " 라는 조건을 충족시키지 못해서라는 답변을 보고 바로 자주 사용하는 Math.floor를 사용하여 채점을 진행할 수 있었다.

 문제랑 제한사항을 잘 확인하고 코드를 짜야겠다는 생각이 들었다....

 

 

 


피자 나눠 먹기 (2)

function solution(n) {
 for(let i=1; i<=100; i++){
    const pizza = 6*i
    
    if(pizza % n == 0){
     return pizza / 6   
    } 
 }
}

피자 한판에 먹을 사람을 나눠서 나머지가 생기지 않는 방식으로 계산을 진행했다.

 

 

 

 


피자 나눠 먹기(3)

function solution(slice, n) {
    let pizza = 1;
    let pizzas = pizza * slice;
    while(pizzas / n < 1){
        pizza += 1;
        pizzas = pizza * slice
        
    }
    return pizza
}

주어진 피자판의 값과 그에 대한 모든 피자조각의 값을 구해서 모든 피자조각 / 나눠먹을 사람의 수 를 구해 해당 값이 1보다 작으면 피자 판의 수를 1씩 올리고 값이 크면 현재 피자판의 수를 반환했다.

 

 

 

 


문자열 뒤집기

function solution(my_string) {
   return my_string.split("").reverse().join('')
}

야호 한줄 코드 성공

문자열을 split 함수로 글자 하나하나 잘라서 배열화 시키고 reverse로 배열을 반전시켜준 후 join으로 배열의 모든 인덱스를 합쳐 문자열화 시켰다.

다음은 소중한 AH이가 알려준 방법이다.

function solution(my_string) {
    let answer = "";
    for(let i = my_string.length-1; i >= 0  ; i--){
        answer += my_string[i]
    }
    return answer   
}

문자열도 배열처럼 인덱스로 접근할 수 있다는 점을 이용하여 작성한 코드이다. AH이 체고....!

 

 

 


배열 원소의 길이

function solution(strlist) {
    var answer = [];
for(let i=0; i < strlist.length ; i++){
    answer.push(strlist[i].length)
}
    return answer;
}

 

 

 


배열 자르기

function solution(numbers, num1, num2) {
    return numbers.slice(num1, num2+1)
}

 

 

 


문자열안에 문자열

function solution(str1, str2) {
    return str1.search(str2) == -1? 2 : 1
}

문제를 풀면서 find처럼 문자열에서도 원하는 요소를 찾을 수 있는 메소드가 있을 것이라고 생각했고, search메소드를 알게되어 간단히 그 내용을 정리했다. 아래의 링크로 가면 search에 대한 내용을 확인할 수 있다.

 

[Javascript] String.search()_문자열 검색 메소드

자바스크립트에서 search는 문자열에서 조건 문자열을 찾아서 몇 번째 인덱스에 있는지 확인하는 메소드이다. 확인되는 값이 있으면 해당 값의 첫 번째로 매치되는 인덱스를 반환하고, 확인되는

oo0ojw.tistory.com

 

 

 

 

728x90