Front-End
프로그래머스 기초트레이닝 10일차 본문
흐어 .. 주말에 강아지가 또 아프고,
저는 저대로 가족모임이 있고 해서 바빴습니다..
늦었지만 다시 시작!
문제 47. 두 수의 차
문제 설명
정수 num1과 num2가 주어질 때,
num1에서 num2를 뺀 값을 return하도록 soltuion 함수를 완성해주세요.
입출력 예
num1 | num2 | result |
2 | 3 | -1 |
100 | 2 | 98 |
입출력 예 설명
num1이 2이고 num2가 3이므로 2 - 3 = -1을 return합니다.
num1이 100이고 num2가 2이므로 100 - 2 = 98을 return합니다.
저의 풀이!
메모
허허이.. 너무 쉽죠 ?
문제 48. 뒤에서 5등 위로
문제 설명
정수로 이루어진 리스트 num_list가 주어집니다.
num_list에서 가장 작은 5개의 수를 제외한 수들을 오름차순으로 담은 리스트를 return하도록 solution 함수를 완성해주세요.
입출력 예
num_list | result |
[12, 4, 15, 46, 38, 1, 14, 56, 32, 10] | [15, 32, 38, 46, 56] |
입출력 예 설명
[12, 4, 15, 46, 38, 1, 14, 56, 32, 10]를 정렬하면 [1, 4, 10, 12, 14, 15, 32, 38, 46, 56]이 되고, 앞에서 부터 6번째 이후의 수들을 고르면 [15, 32, 38, 46, 56]가 됩니다.
저의 풀이!
메모
slice 는 인덱스로 계산한다.
5개의 수를 제외한, 이라고 했으니까
인덱스 4까지는 포함하면 안되는거다.
slice 의 인자는 그 인덱스까지 포함이기 때문에 그 이후의 숫자를 입력해줘야한다.
정렬함수 sort 는 오류가 있다.
문자열로 인식하고 정렬해서 100, 2, 30 이 있으면 2, 30 , 100 으로 되야하는데
sort 는 100,2, 30 으로 정렬한다.
숫자를 기준으로 할 때는 람다 함수를 넣어서
(a,b) => a-b로
음수가 리턴된다면 a < b를 의미하고,
양수가 리턴된다면 a > b를 의미하고,
0이 리턴된다면 a == b를 의미한다.
정렬을 위해 두 값을 비교하는 기준을 정의하여 sort()함수의 매개변수로 넘겨주는 것이다.
숫자랑 문자열을 함께 넣을 경우는 되지않으니 조건문을 써야한다.
문자열(유니코드)끼리는 >, < 연산은 가능하지만 - 연산은 불가능하기 때문에 제대로 된 비교가 이루어지지 않은 것!
따라서 아래 코드와 같이 >, <, ===를 이용한 람다 함수를 넘겨줘야 한다.
let sortedArray = array.sort((a, b) => {
if(a < b) return -1;
if(a > b) return 1;
if(a === b) return 0;
else return -1;
})
문제 49. 글자를 이어 붙여 문자열 만들기
문제 설명
문자열 my_string과 정수 배열 index_list가 매개변수로 주어집니다.
my_string의 index_list의 원소들에 해당하는 인덱스의 글자들을 순서대로 이어 붙인 문자열을 return 하는
solution 함수를 작성해 주세요.
입출력 예
my_string | index_list | result |
"cvsgiorszzzmrpaqpe" | [16, 6, 5, 3, 12, 14, 11, 11, 17, 12, 7] | "programmers" |
"zpiaz" | [1, 2, 0, 0, 3] | "pizza" |
입출력 예 설명
예제 1번의 my_string에서 인덱스 3, 5, 6, 11, 12, 14, 16, 17에 해당하는 글자는 각각 g, o, r, m, r, a, p, e이므로 my_string에서 index_list에 들어있는 원소에 해당하는 인덱스의 글자들은 각각 순서대로 p, r, o, g, r, a, m, m, e, r, s입니다. 따라서 "programmers"를 return 합니다.
예제 2번의 my_string에서 인덱스 0, 1, 2, 3에 해당하는 글자는 각각 z, p, i, a이므로 my_string에서 index_list에 들어있는 원소에 해당하는 인덱스의 글자들은 각각 순서대로 p, i, z, z, a입니다. 따라서 "pizza"를 return 합니다.
저의 풀이!
메모
반복문을 사용하여 새로운 문자열을 만들어주었습니다.
근데 map으로도 가능합니다!
이런 식으로도 사용할 수 있으니 보십셔!
문제 50. 부분 문자열
문제 설명
문자 "A"와 "B"로 이루어진 문자열 myString과 pat가 주어집니다.
myString의 "A"를 "B"로, "B"를 "A"로 바꾼 문자열의 연속하는 부분 문자열 중 pat이 있으면 1을
아니면 0을 return 하는 solution 함수를 완성하세요.
입출력 예
myString | pat | result |
"ABBAA" | "AABB" | 1 |
"ABAB" | "ABAB" | 0 |
입출력 예 설명
"ABBAA"에서 "A"와 "B"를 서로 바꾸면 "BAABB"입니다. 여기에는 부분문자열 "AABB"가 있기 때문에 1을 return 합니다.
"ABAB"에서 "A"와 "B"를 서로 바꾸면 "BABA"입니다. 여기에는 부분문자열 "BABA"가 없기 때문에 0을 return 합니다.
저의 풀이!
메모
이거는 반복문 이해랑 삼항연산자 또는 조건문을 이용하면 쉬운 문제였습니다!
문제 51. 원하는 문자열 찾기
문제 설명
알파벳으로 이루어진 문자열 myString과 pat이 주어집니다.
myString의 연속된 부분 문자열 중 pat이 존재하면 1을 그렇지 않으면 0을 return 하는 solution 함수를 완성해 주세요.
단, 알파벳 대문자와 소문자는 구분하지 않습니다.
입출력 예
myString | pat | return |
"AbCdEfG" | "aBc" | 1 |
"aaAA" | "aaaaa" | 0 |
입출력 예 설명
"AbCdEfG"의 0~2번 인덱스의 문자열은 "AbC"이며, 이는 pat인 "aBc"와 같습니다. 따라서 1을 return 합니다.
myString의 길이가 pat보다 더 짧기 때문에 myString의 부분 문자열 중 pat와 같은 문자열이 있을 수 없습니다. 따라서 0을 return 합니다.
저의 풀이!
메모
이것도 매우 간단했습니당.
일단 '대소문자 구분하지 않습니다.' 여기서 빠르게!
그러면 동일하게 전부 변경해서 확인하면 편하겠다라는 생각을 하고 두 인자 다 대문자로 변경한 후에
includes 함수를 사용했습니다~
return 바로뒤에 + 표시는 number 로 boolean값을 표현해달라고 자동형변환을 해둔겁니다!
문제 52. 배열 만들기
문제 설명
정수 n과 k가 주어졌을 때,
1 이상 n이하의 정수 중에서 k의 배수를 오름차순으로 저장한 배열을 return 하는 solution 함수를 완성해 주세요.
입출력 예
n | k | result |
10 | 3 | [3, 6, 9] |
15 | 5 | [5, 10, 15] |
입출력 예 설명
1 이상 10 이하의 3의 배수는 3, 6, 9 이므로 [3, 6, 9]를 return 합니다.
1 이상 15 이하의 5의 배수는 5, 10, 15 이므로 [5, 10, 15]를 return 합니다.
저의 풀이!
메모
n이하의 정수라고 해서 반복문 조건에 넣었습니다.
그리고 배수를 오름차순으로 저장해달라하여 나머지를 이용해서 풀었습니당
문제 53. 마지막 두원소
문제 설명
정수 리스트 num_list가 주어질 때,
마지막 원소가 그전 원소보다 크면 마지막 원소에서 그전 원소를 뺀 값을
마지막 원소가 그전 원소보다 크지 않다면 마지막 원소를 두 배한 값을 추가하여 return하도록 solution 함수를 완성해주세요.
입출력 예
num_list | result |
[2, 1, 6] | [2, 1, 6, 5] |
[5, 2, 1, 7, 5] | [5, 2, 1, 7, 5, 10] |
입출력 예 설명
마지막 원소인 6이 그전 원소인 1보다 크기 때문에 6 - 1인 5를 추가해 return합니다.
마지막 원소인 5가 그전 원소인 7보다 크지 않기 때문에 5의 두 배인 10을 추가해 return합니다.
저의 풀이!
메모
const [ a, b ] = [...num_list]
이건 찾아보고 공부해서 적용해보자...!!
wow.....
생각도 못한 풀이입니다 ..
const [a,b] = [...num_list] 이거 자체가 num_list 배열의 1, 2 번 요소를 a,b 로 선언하고
그걸 reverse() 뒤집어서하면 맨뒤에거가 a고 맨뒤에서 앞에거가 b가되는 ...
그렇게해서 배열안에 num_list들과 뒤에 하나 추가하는 방식으로 .. .생각도 못했습니다.
'알고리즘' 카테고리의 다른 글
프로그래머스 기초트레이닝 11일차 (0) | 2023.08.26 |
---|---|
프로그래머스 기초트레이닝 11일차 (0) | 2023.08.26 |
프로그래머스 기초트레이닝 9일차 (0) | 2023.08.17 |
프로그래머스 기초트레이닝 8일차 (2) | 2023.08.16 |
프로그래머스 기초트레이닝 7일차 (1) | 2023.08.15 |