본문 바로가기

개발이야기28

[알고리즘] 크기가 작은 부분문자열 1. 조건 문자열 t와 p가 있다. 1 ≤ p의 길이 ≤ 18 p의 길이 ≤ t의 길이 ≤ 10,000 t와 p는 숫자로만 이루어진 문자열이며, 0으로 시작하지 않는다. 2. 풀이과정 p의 길이만큼 t의 부분 문자열을 순회한다. 순회하면서 t의 부분 문자열이 p보다 작거나 같을 때 answer를 1씩 더한다. 3. 풀이 function solution(t, p) { let answer = 0; const totalSize = t.length; const sliceSize = p.length; for (let i = 0; i 2023. 3. 26.
[알고리즘] 기사단원의 무기 1. 조건 기사단원의 수(번호): 1 2023. 3. 24.
[알고리즘] 가장 가까운 같은 글자 1. 조건 s의 길이가 최대일때는 10,000이고 최악의 경우를 생각한다면 (9999 + 0) * 5000 = 약 5천만 번 순회한다고 생각할 수 있다. 이때 순회중에는 단순 비교만 할 것이니 시간초과가 나지 않을것으로 생각되어 이중 반복문으로 문제를 풀기 시작했다. 2. 풀이 과정 바깥쪽 반복문에서는 i가 0부터 s의 길이만큼 반복하고 안쪽 반복문에서는 j가 i부터 0번까지 i만큼 반복한다.  반복하는중에는 s[i]와 s[j]가 일치하는지 확인하고 일치한다면 i - j의 값을 answer에 삽입하고 j가 0이되면 일치하는 값이 없다는것으로 -1을 answer에 삽입해주는 방법으로 풀이하였다. 3. 풀이 function solution(s) { const answer = [-1]; for (let i .. 2023. 3. 24.
[알고리즘] 명예의 전당 (1) 1. 조건 명예의 전당에 오를 수 있는 점수들은 총 k개 이다. 매일 새로운 가수가 한곡을 부르며, score가 갱신된다. score가 갱신되면서 명예의전당에 등재된 최소 점수보다 높으면 최소 점수가 밀려나고 해당 score가 등재된다. 이때 매일 score가 갱신될때마다 최하위 점수들을 기록하여 배열로 return 하는게 최종 목표. 2. 풀이 과정 k의 범위는 3 2023. 3. 23.
[알고리즘] 문자열 나누기 1. 조건 문자열 s가 주어진다. 첫 글자를 x로 하고 x의 글자수를 순서대로 세기 시작한다 이 과정에서 x가 아닌 글자의 글자수도 동시에 센다. x의 글자수와 x가 아닌 글자수가 일치하는 순간 글자를 슬라이싱하고 result를 1 증가시킨다. 문자열 s가 끝날때까지 반복하고 끝에는 글자수가 서로 달라도 슬라이싱을 진행하고 result를 1 증가시킨다. 1 2023. 3. 23.
[알고리즘] 프로그래머스 SQL(3) 1. 자동차 대여 기록에서 장기/단기 대여 구분하기 -- STATE_DATE와 END_DATE를 주어진 형식에 맞게 DATE_FORMAT을 활용하여 가져온다 -- END_DATE와 START_DATE의 차이가 29 미만이면 '단기 대여' -- 29 이상이면 '장기 대여'로 -- RENT_TYPE이라는 컬럼으로 가져온다. SELECT HISTORY_ID, CAR_ID, DATE_FORMAT (START_DATE, "%Y-%m-%d") AS START_DATE, DATE_FORMAT (END_DATE, "%Y-%m-%d") AS END_DATE, CASE WHEN DATEDIFF(END_DATE, START_DATE) 2023. 2. 10.