알고리즘 문제풀기 (5/15, #13~16)

minkyung·2022년 5월 16일
0
post-thumbnail


13. 2016년

난이도: 중하

class Solution {
    public String solution(int a, int b) {
        String[] day = {"FRI", "SAT", "SUN", "MON", "TUE", "WED", "THU"};
        int[] month = {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};        

        int date = 0;
        for (int i = 0; i < a - 1; i++) {
            date += month[i];
        }

        date += b - 1;

        return day[date % 7];
    }
}
  function solution(a,b) {
let answer = '';
let monthEnd = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; 
let day = ["FRI", "SAT", "SUN", "MON", "TUE", "WED", "THU"];   
let date = 0;

for (let i = 0; i < a - 1; i++) {
    date += monthEnd[i];
}

date += b - 1;

answer = day[date % 7];
return answer
}


14. 나누어 떨어지는 숫자 배열

난이도: 중하

function solution(arr, divisor) {
    var answer = [];
    for (i=0; i<arr.length; i++){  
        if (arr[i]%divisor===0){
            answer.push(arr[i]);
            }
    }
    if (answer.length==0){
        return answer = [-1];
    }
    answer.sort(function(a, b) {return a - b})
    return answer;
}

따봉 많은 풀이)

function solution(arr, divisor) {
    var answer = arr.filter(v => v%divisor == 0);
    return answer.length == 0 ? [-1] : answer.sort((a,b) => a-b);
}

15. 내적

난이도: 중하
내적이 뭐냐고 ...
다른 사람 풀이보니까 다 아는 코드인데 내적이 뭔데 그래서 ....

문제 설명
길이가 같은 두 1차원 정수 배열 a, b가 매개변수로 주어집니다. a와 b의 내적을 return 하도록 solution 함수를 완성해주세요.

이때, a와 b의 내적은 a[0]b[0] + a[1]b[1] + ... + a[n-1]*b[n-1] 입니다. (n은 a, b의 길이)

제한사항
a, b의 길이는 1 이상 1,000 이하입니다.
a, b의 모든 수는 -1,000 이상 1,000 이하입니다.

입출력 예

abresult
[1,2,3,4][-3,-1,0,2]3
[-1,0,1][1,0,-1]-2

풀이

function solution(a, b) {
    let result = 0;
    for (let i in a) {
        result += a[i] * b[i]
    }
    return result
}
for in 문을 아직 잘 몰라서 찾아본 다른 풀이)

function solution(a, b) {
    var sum = 0;
    for(var i=0; i<a.length; i++){
        sum += a[i]*b[i];
    }
    return sum;
}

16. 문자열 내 p와 y의 개수

난이도: 중하

문자열에서 특정 문자 검색
문자열의 특정 문자 개수 세는 방법
indexOf()를 사용하라고 가르쳐줌. 근데 ...

서치하다가 .count라는 함수를 발견했는데 딱이다! 라고 생각해서 써봤지만 안돼서 아리송 했는데 구글링을 잘못해서 파이썬 함수를 찾은거였다 ..................

답안 1) string 속에 p가 있으면 ++ y가 있으면 -- 해서 count=0 ? 으로 판별

function solution(s){
    let str= s.toLowerCase();
    let count = 0
    for(let i = 0; i <s.length; i++){
        if(str[i]==="p") count++;
        else if(str[i]=== "y") count--
    }
    return count === 0 ? true : false
}
답안 2) .split().length가 같으면 가지고 있는 p와 y의 개수도 동일하다는 논리 사용 

function solution(s){
return s.toUpperCase().split("P").length === s.toUpperCase().split("Y").length;
}
profile
프론트엔드 개발자

0개의 댓글