Programmers/Level 0

<22.10.24> 프로그래머스 Level 0 문제 풀이 #01

mayberry 2022. 10. 24. 20:22

프로그래머스 문제 풀이 #day 01

Programmers Level 0 문제 풀이 #01 - 2022-10-24.

 

1-1. 문자열안에 문자열

 

문제)

문자열 str1, str2가 매개변수로 주어집니다. str1 안에 str2가 있다면 1을 없다면 2를 return하도록 solution 함수를 완성해주세요.

 

내가 작성한 답안)

 

function solution(str1, str2) {
    // str1의 indexOf 함수를 실행하여 str2이 존재하는지 확인
    return str1.indexOf(str2) !== -1 ? 1 : 2;
}

 

1-2. 중복된 숫자 개수

 

문제) 

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

 

내가 작성한 답안)

function solution(n, k) {
	// 기본 양꼬치 가격 * 인원수에, 전체 음료수 가격 - 할인 받은 음료수 가격을 더한다.
    return (n*12000) + (n < 10 ? (k * 2000) : (k*2000) - Math.floor(n / 10) * 2000);
}

 

1-3. 편지

 

문제)

머쓱이는 할머니께 생신 축하 편지를 쓰려고 합니다. 할머니가 보시기 편하도록 글자 한 자 한 자를 가로 2cm 크기로 적으려고 하며, 편지를 가로로만 적을 때, 축하 문구 message를 적기 위해 필요한 편지지의 최소 가로길이를 return 하도록 solution 함수를 완성해주세요.

 

내가 작성한 답안)

function solution(message) {
    return message.length * 2;
}

 

1-4. 아이스 아메리카노

 

문제)

머쓱이는 추운 날에도 아이스 아메리카노만 마십니다. 아이스 아메리카노는 한잔에 5,500원입니다. 머쓱이가 가지고 있는 돈 money가 매개변수로 주어질 때, 머쓱이가 최대로 마실 수 있는 아메리카노의 잔 수와 남는 돈을 순서대로 담은 배열을 return 하도록 solution 함수를 완성해보세요.

 

내가 작성한 답안)

function solution(money) {
	// 머쓱이가 가진 돈으로 살 수 있는 커피의 개수를 구함
    let cup = Math.floor(money/5500);
    // 커피 구매 후 남은 잔돈을 계산
    let changes = money - (cup*5500);
    return [cup, changes];
}

 

1-5. 배열 뒤집기

 

문제)

정수가 들어 있는 배열 num_list가 매개변수로 주어집니다. num_list의 원소의 순서를 거꾸로 뒤집은 배열을 return하도록 solution 함수를 완성해주세요.

 

내가 작성한 답안)

function solution(num_list) {
    return num_list.reverse();
}

 

1-6. 자릿수 더하기

 

문제)

정수 n이 매개변수로 주어질 때 n의 각 자리 숫자의 합을 return하도록 solution 함수를 완성해주세요

 

내가 작성한 답안)

function solution(n) {
	// 정수를 string으로 변환 후 배열로 변환
    let array = String(n).split('');
    // 변환 배열에 map을 돌며 각 원소를 Number type으로 변환 
    let temp = array.map(it => { return Number(it)} ) 
    return temp.reduce((acc,cur) => ( acc += cur))
}

 

1-7. 피자 나눠 먹기(3)

 

문제)

머쓱이네 피자가게는 피자를 두 조각에서 열 조각까지 원하는 조각 수로 잘라줍니다. 피자 조각 수 slice와 피자를 먹는 사람의 수 n이 매개변수로 주어질 때, n명의 사람이 최소 한 조각 이상 피자를 먹으려면 최소 몇 판의 피자를 시켜야 하는지를 return 하도록 solution 함수를 완성해보세요.

 

내가 작성한 답안)

function solution(slice, n) {
	// slice에 1부터 숫자를 곱하여 n보다 크거나 같아지는 시점을 반환
    let result = Array.from({length:n}, (v,k) => k+1).filter(it => {return slice * it >= n})
    return result[0];
}

 

* 사실 그냥 n을 slice로 나눈 뒤 올림만 해주면 끝나는 문제였다. 쉬운 문제를 비상식적으로 어렵게 풀었다...

 

 

1-8. 짝수 홀수 개수

 

문제)

정수가 담긴 리스트 num_list가 주어질 때, num_list의 원소 중 짝수와 홀수의 개수를 담은 배열을 return 하도록 solution 함수를 완성해보세요.

 

내가 작성한 답안)

function solution(num_list) {
	// num_list에 짝수, 홀수를 구분하는 테스트를 통해 filter 한 후 각 결과값을 배열에 할당시킨 뒤 반환
    return [num_list.filter(it => {return it % 2 === 0}).length, num_list.filter(it => { return it % 2 !== 0}).length]
}

 

 

1-9. 가장 큰 수 찾기

 

문제)

정수 배열 array가 매개변수로 주어질 때, 가장 큰 수와 그 수의 인덱스를 담은 배열을 return 하도록 solution 함수를 완성해보세요.

 

내가 작성한 답안)

function solution(array) {
    // 인자로 들어온 배열을 새롭게 복사함
    let nArray = array.map(it => {return it});
    // array를 내림차순 정렬하여 가장 첫번째 인덱스에 큰 값이 오게 함
    let bigNum = array.sort((a,b) => {return b-a})[0];
    // array에서 가장 큰 숫자, 해당 숫자의 인덱스
    return [bigNum, nArray.indexOf(bigNum)];
}

 

 

1-10. 제곱수 판별하기

 

문제)

어떤 자연수를 제곱했을 때 나오는 정수를 제곱수라고 합니다. 정수 n이 매개변수로 주어질 때, n이 제곱수라면 1을 아니라면 2를 return하도록 solution 함수를 완성해주세요.

 

내가 작성한 답안)

function solution(n) {
    // 인자가 제곱수인지를 확인하여 제곱수라면 1, 아니라면 2 return
    // Math.sqrt로 소수일 경우 false, 소수가 아닐 경우 true
    return Number.isInteger(Math.sqrt(n)) ? 1 : 2;
}