TIL 알고리즘

신동윤·2023년 1월 27일
0

문제분석
문제를 정확히 이해합니다.
분석한 내용을 정리합니다.

규칙찾기
분석 내용을 바탕으로 규칙을 찾습니다.

코딩화
분석 내용을 바탕으로 알맞은 구현방법을 찾습니다.

코딩
실제로 코딩을 수행합니다.
통과하지 못한다면 문제가 있는 순서(1 ~ 3번중)로 다시 돌아가서 진행합니다.

2016

https://school.programmers.co.kr/learn/courses/30/lessons/12901#

function solution(a, b) {
    let day = ['FRI','SAT','SUN','MON','TUE','WED','THU'];   
    let month = [31,29,31,30,31,30,31,31,30,31,30,31];
    
    let count = -1 //0~ 365일
    
    for (let i=0; i < a-1; i++) {
        count += month[i];
        console.log(count);
    } 
    
    return day[(count+b)%7];
}

1월 1일은 fri, 2월은 29일까지.
1. 요일은 7일마다 반복된다.
2. 전체 날짜를 구하여 7로 나눈다면 요일을 알 수 있다.

나누어 떨어지는 숫자배열

https://school.programmers.co.kr/learn/courses/30/lessons/12910

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

arr는 자연수 배열
1. 오름차순으로 정렬
2. 반복문을 통해 나머지가 0인 것들만 push
-1을 담는방법 생각하기
2-1. 필터를 통해 조건에 맞는 배열 반환.
!필터는 -1을 뽑아낼 방법이 안나오던데?

수박수박수박수

https://school.programmers.co.kr/learn/courses/30/lessons/12922

function solution(n) {
    let word = "수박"
    let longword = word.repeat(n/2);
    
    return longword.slice(0 , n);
}
  1. 수박을 길게 반복해서 적는다.
  2. 긴 단어를 자른다.

완주하지 못한 선수

https://school.programmers.co.kr/learn/courses/30/lessons/42576
    let sortParticipant = participant.sort();
    let sortCompletion = completion.sort();
    let result = [];
    
    console.log(sortParticipant);
    console.log(sortCompletion);
    
    loop :
    for (let i=0; i<sortParticipant.length; i++) {
        if (sortParticipant[i] !== sortCompletion[i]) {
            return sortParticipant[i];
            break loop;
        }
    }
}
  1. 한명만 통과하지 못했기에 대부분의 목록이 같다.
  2. sort로 쉽게 두 목록을 비교한다.
  3. 반복문으로 두 목록을 비교하여 참가자목록에만 있는 값을 불러온다.

0개의 댓글