[코딩테스트] 풀이 2일차

seungjin Kim·2023년 3월 14일

알고리즘

목록 보기
2/2
post-thumbnail

프로그래머스 스쿨 코딩테스트 : 양꼬치


1. 문제

머쓱이네 양꼬치 가게는 10인분을 먹으면 음료수 하나를 서비스로 줍니다. 양꼬치는 1인분에 12,000원, 음료수는 2,000원입니다. 정수 n과 k가 매개변수로 주어졌을 때, 양꼬치 n인분과 음료수 k개를 먹었다면 총얼마를 지불해야 하는지 return 하도록 solution 함수를 완성해보세요.

2. 나의 풀이

❶ 함수 정규식을 이용한 풀이

// 함수 정규식
function solution(n, k) {
    let drink = k * 2000
    let sale = Math.trunc(n/10)
    return (12000*n) + ((k-sale)*2000)
}

}

❷ Tilt틸드문법
~ : 32비트 정수로 변환한 후 NOT 연산자를 실행
결과적으로는 -(n+1)
~~ : Math.floor와 동등하게 쓰이는 연산자

// 익명함수
let solution = function(n, k){
	k -= ~~(n/10); //n을 10개 이상 먹으면 K에서 뺴준다.
	if (k < 0) k = 0; //k가 -갯수일 때에는 0 처리
    return (n*12000) + (k*2000)
}

solution();

프로그래머스 스쿨 코딩테스트 : 순서쌍의 개수


1. 문제

순서쌍이란 두 개의 숫자를 순서를 정하여 짝지어 나타낸 쌍으로 (a, b)로 표기합니다. 자연수 n이 매개변수로 주어질 때 두 숫자의 곱이 n인 자연수 순서쌍의 개수를 return하도록 solution 함수를 완성해주세요.

2. 나의 풀이

❶ 함수 정규식을 이용한 풀이

  • 다중 for문을 통해서 곱셈을 반복해서 a*b = n이 나오는 식
  • 조건이 성립하는 경우 result +1 값으로 순서쌍 체크
  • 해당 코드는 무한루프 발생 > 왜 그런지 잘 모르겠음
// 함수 정규식
function solution (n) {
    let result = 0;
    for(let a = 1; a <= n; a++) {
        for(let b = 1; b <= n; b++) {
        if((a * b) == n) result += 1;
    } 
}    
return result;
}

❷ 간단한 계산

  • a로 n을 나누었을 때, 나머지가 0이면 성립
  • 6 = (16) (23) (32) (61) 모두 성립
  • for문을 통해서 1개의 변수만으로 체크 가능
function solution(n) {
    var answer = 0;
    for(let i = 0;i<=n;i++){
        if(n % i === 0 ){
            answer += 1
        }
    }
    return answer;
}

profile
코드 한 줄

0개의 댓글