본문 바로가기

알고리즘/Programmers79

[TIL] 2023.08.15 Programmers_문자열 묶기 문자열 묶기 문제 설명 문자열 배열 strArr이 주어집니다. strArr의 원소들을 길이가 같은 문자열들끼리 그룹으로 묶었을 때 가장 개수가 많은 그룹의 크기를 return 하는 solution 함수를 완성해 주세요. 입출력 예 strArr result ["a","bc","d","efg","hi"] 2 입출력 예 #1 각 문자열들을 길이에 맞게 그룹으로 묶으면 다음과 같습니다. 문자열 길이 문자열 목록 개수 1 ["a","d"] 2 2 ["bc","hi"] 2 3 ["efg"] 1 개수의 최댓값은 2이므로 2를 return 합니다. 나의 풀이 function solution(strArr) { const sortedArr = strArr.sort((a, b) => b.length - a.length); .. 2023. 8. 15.
[TIL] 2023.08.14 Programmers_세 개의 구분자 세 개의 구분자 문제 설명 임의의 문자열이 주어졌을 때 문자 "a", "b", "c"를 구분자로 사용해 문자열을 나누고자 합니다. 예를 들어 주어진 문자열이 "baconlettucetomato"라면 나눠진 문자열 목록은 ["onlettu", "etom", "to"] 가 됩니다. 문자열 myStr이 주어졌을 때 위 예시와 같이 "a", "b", "c"를 사용해 나눠진 문자열을 순서대로 저장한 배열을 return 하는 solution 함수를 완성해 주세요. 단, 두 구분자 사이에 다른 문자가 없을 경우에는 아무것도 저장하지 않으며, return할 배열이 빈 배열이라면 ["EMPTY"]를 return 합니다. 입출력 예 myStr result "baconlettucetomato" ["onlettu", "eto.. 2023. 8. 15.
[TIL] 2023.08.13 Programmers_빈 배열에 추가, 삭제하기 빈 배열에 추가, 삭제하기 문제 설명 아무 원소도 들어있지 않은 빈 배열 X가 있습니다. 길이가 같은 정수 배열 arr과 boolean 배열 flag가 매개변수로 주어질 때, flag를 차례대로 순회하며 flag[i]가 true라면 X의 뒤에 arr[i]를 arr[i] × 2 번 추가하고, flag[i]가 false라면 X에서 마지막 arr[i]개의 원소를 제거한 뒤 X를 return 하는 solution 함수를 작성해 주세요. 입출력 예 arr flag result [3, 2, 4, 1, 3] [true, false, true, false, false] [3, 3, 3, 3, 4, 4, 4, 4] 예제 1번에서 X의 변화를 표로 나타내면 다음과 같습니다 i flag[i] arr[i] X [] 0 tru.. 2023. 8. 13.
[TIL] 2023.08.11 Programmers_날짜 비교하기 날짜 비교하기 문제 설명 정수 배열 date1과 date2가 주어집니다. 두 배열은 각각 날짜를 나타내며 [year, month, day] 꼴로 주어집니다. 각 배열에서 year는 연도를, month는 월을, day는 날짜를 나타냅니다. 만약 date1이 date2보다 앞서는 날짜라면 1을, 아니면 0을 return 하는 solution 함수를 완성해 주세요. 입출력 예 date1 date2 result [2021, 12, 28] [2021, 12, 29] 1 [1024, 10, 24] [1024, 10, 24] 0 입출력 예 #1 date1이 date2보다 하루 앞서기 때문에 1을 return 합니다. 입출력 예 #2 date1과 date2는 날짜가 서로 같으므로 date1이 더 앞서는 날짜가 아닙니다.. 2023. 8. 11.
[TIL] 2023.08.03 Programmers_0 떼기 0 떼기 문제 설명 정수로 이루어진 문자열 n_str이 주어질 때, n_str의 가장 왼쪽에 처음으로 등장하는 0들을 뗀 문자열을 return 하도록 solution 함수를 완성해 주세요. 입출력 예 n_str result "0010" "10" "854020" "854020" 입출력 예 #1 "0010"의 가장 왼쪽에 연속으로 등장하는 "0"을 모두 제거하면 "10"이 됩니다. 입출력 예 #2 "854020"는 가장 왼쪽에 0이 없으므로 "854020"을 return 합니다. 나의 풀이 function solution(n_str) { if (!/^0+/.test(n_str)) return n_str; if (/^0+/.test(n_str)) { const arr = [...n_str]; for (cons.. 2023. 8. 3.
[TIL] 2023.08.02 Programmers_특별한 이차원 배열 2 특별한 이차원 배열 2 문제 설명 n × n 크기의 이차원 배열 arr이 매개변수로 주어질 때, arr이 다음을 만족하면 1을 아니라면 0을 return 하는 solution 함수를 작성해 주세요. 0 ≤ i, j < n인 정수 i, j에 대하여 arr[i][j] = arr[j][i] 입출력 예 arr result [[5, 192, 33], [192, 72, 95], [33, 95, 999]] 1 [[19, 498, 258, 587], [63, 93, 7, 754], [258, 7, 1000, 723], [587, 754, 723, 81]] 0 입출력 예 #1 예제 1번에서 문제의 조건이 잘 보이도록 표를 만들면 다음과 같습니다. 조건을 만족하므로 1을 return 합니다. i j arr[i][j] ar.. 2023. 8. 2.
[TIL] 2023.07.27 Programmers_수열과 구간 쿼리 3 수열과 구간 쿼리 3 문제 설명 정수 배열 arr와 2차원 정수 배열 queries이 주어집니다. queries의 원소는 각각 하나의 query를 나타내며, [i, j] 꼴입니다. 각 query마다 순서대로 arr[i]의 값과 arr[j]의 값을 서로 바꿉니다. 위 규칙에 따라 queries를 처리한 이후의 arr를 return 하는 solution 함수를 완성해 주세요. 입출력 예 arr queries result [0, 1, 2, 3, 4] [[0, 3],[1, 2],[1, 4]] [3, 4, 1, 0, 2] 각 쿼리에 따라 arr가 다음과 같이 변합니다. arr [0, 1, 2, 3, 4] [3, 1, 2, 0, 4] [3, 2, 1, 0, 4] [3, 4, 1, 0, 2] 따라서 [3, 4, 1,.. 2023. 7. 28.
[TIL] 2023.07.27 Programmers_주사위 게임 2 주사위 게임 2 문제 설명 1부터 6까지 숫자가 적힌 주사위가 세 개 있습니다. 세 주사위를 굴렸을 때 나온 숫자를 각각 a, b, c라고 했을 때 얻는 점수는 다음과 같습니다. 세 숫자가 모두 다르다면 a + b + c 점을 얻습니다. 세 숫자 중 어느 두 숫자는 같고 나머지 다른 숫자는 다르다면 (a + b + c) × (a2 + b2 + c2 )점을 얻습니다. 세 숫자가 모두 같다면 (a + b + c) × (a2 + b2 + c2 ) × (a3 + b3 + c3 )점을 얻습니다. 세 정수 a, b, c가 매개변수로 주어질 때, 얻는 점수를 return 하는 solution 함수를 작성해 주세요. 입출력 예 a b c result 2 6 1 9 5 3 3 473 4 4 4 110592 입출력 예 #.. 2023. 7. 27.
[TIL] 2023.07.15 Programmers_l로 만들기 l로 만들기 문제 설명 알파벳 소문자로 이루어진 문자열 myString이 주어집니다. 알파벳 순서에서 "l"보다 앞서는 모든 문자를 "l"로 바꾼 문자열을 return 하는 solution 함수를 완성해 주세요. 입출력 예 myString result "abcdevwxyz" "lllllvwxyz" "jjnnllkkmm" "llnnllllmm" 입출력 예 #1 0 ~ 4번 인덱스의 문자 "a","b","c","d","e"는 각각 "l"보다 앞서는 문자입니다. 따라서 "l"로 고쳐줍니다. 그 외의 문자는 모두 "l"보다 앞서지 않는 문자입니다. 따라서 바꾸지 않습니다. 따라서 "lllllvwxyz"을 return 합니다. 입출력 예 #2 0번, 1번, 6번, 7번 인덱스의 문자 "j","j","k","k"는.. 2023. 7. 15.
[TIL] 2023.07.03 Programmers_배열의 원소만큼 추가하기 배열의 원소만큼 추가하기 문제 설명 아무 원소도 들어있지 않은 빈 배열 X가 있습니다. 양의 정수 배열 arr가 매개변수로 주어질 때, arr의 앞에서부터 차례대로 원소를 보면서 원소가 a라면 X의 맨 뒤에 a를 a번 추가하는 일을 반복한 뒤의 배열 X를 return 하는 solution 함수를 작성해 주세요. 입출력 예 arr result [5, 1, 4] [5, 5, 5, 5, 5, 1, 4, 4, 4, 4] [6, 6] [6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6] [1] [1] 나의 풀이 function solution(arr) { let answer = []; for (const num of arr) { answer = [...answer, ...Array(num).fill(.. 2023. 7. 4.