목록프로그래머스/0단계 (66)
연습장

Q. 알파벳으로 이루어진 문자열 myString이 주어집니다. 모든 알파벳을 대문자로 변환하여 return 하는 solution 함수를 완성해 주세요. 풀이 방법은 2가지 정도 생각이 든다. 1. toUpperCase 이용 2. 유니코드 변환을 통해 생성한 함수 이용 // 2. 유니코드 변환 const UpChar = (char) => { if (char >= 'a') { return String.fromCharCode(char.charCodeAt() - 32) } else { return char } } function solution(myString) { var answer = ''; // 1. toUpperCase // let UpperString = myString.toUpperCase() for..

Q. 정수 배열 arr가 주어집니다. arr의 각 원소에 대해 값이 50보다 크거나 같은 짝수라면 2로 나누고, 50보다 작은 홀수라면 2를 곱하고 다시 1을 더합니다. 이러한 작업을 x번 반복한 결과인 배열을 arr(x)라고 표현했을 때, arr(x) = arr(x + 1)인 x가 항상 존재합니다. 이러한 x 중 가장 작은 값을 return 하는 solution 함수를 완성해 주세요. 단, 두 배열에 대한 "="는 두 배열의 크기가 서로 같으며, 같은 인덱스의 원소가 각각 서로 같음을 의미합니다. 주어진 배열의 원소에 대해서 50 이상이면서 짝수이면 2로 나누고 50 미만이면서 홀수이면 2를 곱하고 1 을 더한다. 위의 과정을 모든 원소에 1번씩 적용한것을 arr(1) 이라 하며 더이상 배열의 원소가 ..

Q. 문자열 리스트 str_list에는 "u", "d", "l", "r" 네 개의 문자열이 여러 개 저장되어 있습니다. str_list에서 "l"과 "r" 중 먼저 나오는 문자열이 "l"이라면 해당 문자열을 기준으로 왼쪽에 있는 문자열들을 순서대로 담은 리스트를, 먼저 나오는 문자열이 "r"이라면 해당 문자열을 기준으로 오른쪽에 있는 문자열들을 순서대로 담은 리스트를 return하도록 solution 함수를 완성해주세요. "l"이나 "r"이 없다면 빈 리스트를 return합니다. l 이나오면 왼쪽을 return r 이나오면 오른쪽을 return 없다면 빈 리스트 [] return str_list 를 for 문으로 돌면서 l 이 나오면 그것보다 왼쪽을 slice 해오고 r 이 나오면 그것보다 오른쪽을 sl..

Q. 정수 배열 arr와 query가 주어집니다. query를 순회하면서 다음 작업을 반복합니다. 짝수 인덱스에서는 arr에서 query[i]번 인덱스를 제외하고 배열의 query[i]번 인덱스 뒷부분을 잘라서 버립니다. 홀수 인덱스에서는 arr에서 query[i]번 인덱스는 제외하고 배열의 query[i]번 인덱스 앞부분을 잘라서 버립니다. 위 작업을 마친 후 남은 arr의 부분 배열을 return 하는 solution 함수를 완성해 주세요. 생각보다 정답률이 낮은 문제 이유는 문제 해석이 중의적으로 되기 때문이다. query[i] 의 홀 짝 이 아닌 i 자체의 홀 짝 을 판단해서 버릴지 말지 를 구하는 문제이다 올바른 해석은 arr[query[0]] 의 뒤를 버리고 arr[query[1]] 의 앞을 ..

Q. 정수 배열 arr가 주어집니다. 배열 안의 2가 모두 포함된 가장 작은 연속된 부분 배열을 return 하는 solution 함수를 완성해 주세요. 단, arr에 2가 없는 경우 [-1]을 return 합니다. 경우의 수가 여러개라서 생각을 잘해야 풀 수 있다. 1) 2가 없는경우 - 예시의 3번이며 -1 을 retrun 한다. 2) 2가 1개인 경우 - 예시의 2번이며 2 를 return 한다. 3) 2가 2개인 경우 - 예시의 1번이며 2부터 2까지 모두 slice 해서 return 한다. 4) 2가 3개 이상인 경우 - 예시의 4번이며 처음 2 부터 마지막 2까지 모두 slice 해서 return 한다. 각각의 케이스를 하나씩 고려하기 보다는 문제를 잘 정리하면서 공통된것을 찾아서 없애며 푸는..

Q. 정수 n과 정수 3개가 담긴 리스트 slicer 그리고 정수 여러 개가 담긴 리스트 num_list가 주어집니다. slicer에 담긴 정수를 차례대로 a, b, c라고 할 때, n에 따라 다음과 같이 num_list를 슬라이싱 하려고 합니다. n = 1 : num_list의 0번 인덱스부터 b번 인덱스까지 n = 2 : num_list의 a번 인덱스부터 마지막 인덱스까지 n = 3 : num_list의 a번 인덱스부터 b번 인덱스까지 n = 4 : num_list의 a번 인덱스부터 b번 인덱스까지 c 간격으로 올바르게 슬라이싱한 리스트를 return하도록 solution 함수를 완성해주세요. n 에 따라서 4가지의 슬라이싱이 진행된다. -> 조건문 a = slicer[0] b = slicer[1] ..

Q. 알파벳 대소문자로만 이루어진 문자열 my_string이 주어질 때, my_string에서 'A'의 개수, my_string에서 'B'의 개수,..., my_string에서 'Z'의 개수, my_string에서 'a'의 개수, my_string에서 'b'의 개수,..., my_string에서 'z'의 개수를 순서대로 담은 길이 52의 정수 배열을 return 하는 solution 함수를 작성해 주세요. result = [ ] 라는 배열안에 0 이 각각 26개씩 (A-Z , a-z) 총 52개 가 존재하는 배열이 있다. 주어진 my_string 에 따라서 A 일 경우 0 번째 인덱스가 1 증가. AAB 일 경우 0번째 인덱스가 2증가 , 1번째 인덱스가 1 증가 이런식으로 카운팅 해주는게 목표이다. 잘..

Q. 문자열 my_string과 두 정수 m, c가 주어집니다. my_string을 한 줄에 m 글자씩 가로로 적었을 때 왼쪽부터 세로로 c번째 열에 적힌 글자들을 문자열로 return 하는 solution 함수를 작성해 주세요. 흔히 말하는 세로 드립 문제이다. 주어진 문자열을 m 만큼씩 끊어서 2차원으로 만들고 c 번째 열의 세로를 읽는 문제이다. 따라서 문자열의 각 행을 배열에 끊어서 저장하고 m=4 인 배열의 경우 각 인덱스는 0번째는 문자열의 0 - 3 까지 1번째는 문자열의 4 - 7 까지 2번째는 문자열의 8 - 11 까지 ... 5번째는 문자열의 16 - 19 까지 각각 새로운 배열 arr1 에 저장하고 arr1 의 원소들에 대해서 각각 c = 2 번째 글자를 가져오게된다. 그 중에서 원하..

Q. 문자열 my_string과 정수 s, e가 매개변수로 주어질 때, my_string에서 인덱스 s부터 인덱스 e까지를 뒤집은 문자열을 return 하는 solution 함수를 작성해 주세요. my_string 으로 주어진 문자열의 s 번째 부터 e 번째 인덱스까지 존재하는 문자열의 위치를 바꾸는 (뒤집는) 문제이다. ex) 뒤집기 : 12345 -> 54321 코딩을 할때 절차식, 객체식, 함수식 .. .? 방법이 있으며 요즘 함수식으로 푸는게 유행이라는 말을 들어서 함수식으로 한번 풀어봤다. 먼저 rev 라는 함수를 정의하고 const rev = (AA) => { let revStr = '' for(let i = AA.length-1; i >= 0 ; i--) { revStr += AA[i] } ..

Q . 문자열 my_string과 정수 n이 매개변수로 주어질 때, my_string의 앞의 n글자로 이루어진 문자열을 return 하는 solution 함수를 작성해 주세요. 간단하게 말하면 앞에서부터 n 번째까지의 문자열을 return 하는 문제 slice 를 사용하면 간단하게 해결할 수 있다. function solution(my_string, n) { return my_string.slice(0,n) } 이렇게 0단계의 문제중에서 간단한건 생략하고 조금 더 의미있는걸로 써봐야겠다.