🌟 = 내가 생각한 난이도있는 풀이
1. 문자열 내림차순으로 배치하기 1레벨
2. 부족한 금액 계산하기 1레벨
3. 문자열 다루기 기본 1레벨
4. 행렬의 덧셈 1레벨
function solution(s) {
return s.split('').sort().reverse().join('') // 입출력 예시만을 따지면, sort()는 사용하지않아도 된다..
}
// 알파벳은 sort((a, b) => b - a) 가 적용되지않고,
// 보통 sort().reverse() 로 사용하는게 효율이 좋다고한다.
function solution(s) {
let answer = '';
let lowercase = (s.replace(/[A-Z]/g, '').split('')).sort().reverse().join('');
let uppercase = (s.replace(/[a-z]/g, '').split('')).sort().reverse().join('');
return answer = lowercase + uppercase;
}
다른 사람 풀이
: 이 풀이는 대문자와 소문자를 각각 내림차순한뒤에 소문자를 앞쪽으로 먼저 더해서 앞으로 리턴되게 하였다.
일단 replace 괄호안은 정규식표현이 들어갔는데 [] 배열안의 요소을 '' 로 뽑아내고, 내림차순을 진행하였다.
변수.replace(/찾을 문자열/gi, "변경할 문자열")
function solution(price, money, count) {
var answer = 0;
for(let i = 1; i <= count; i++) {
answer += (price * i) // 3 + 6 + 9 + 12
}
return (answer - money > 0) ? answer - money : 0;
}
// price 는 카운팅된 count 값이 곱해진다.. 그리고 모든 값은 더해진다..
// 내가 가진 money가 남는다면 0를, 부족하다면 부족한만큼을 출력시킨다..
// 부족하다면 price * count값 - money 를 return..
answer - money > 0
는 돈이 부족 경우엔? 이라는 조건식이니 부족한 돈을 그대로 출력하고, 돈이 남는다면 0으로 출력function solution(s) {
var answer = parseInt(s); // 먼저 s값의 요소를 전부 정수형으로 바꿔준다.
// Number는 사용못한다 숫자에 1e3 처럼 지수형식이오면 기능을 못해
if((s.length === 4 || s.length === 6) && s == answer) { // 여기서 s === answer는 사용불가.
// s는 현재 문자열이고, Number(s)는 숫자형이니까 type이 다름..
answer = true; // 길이가 4 or 6이고, s값이 숫자형입니까? 그럼 true
} else {
answer = false; // 아니면? 숫자형이 아닌게 있으니 false
}
return answer;
}
너무 골이 아팠던 문제였다... 처음엔 for문을 사용해서 s[i] % 1 != 0 이면 false다 라는 식으로 접근했는데
도저히 답이 나오지않아서 더 간단하게 생각해봤던 문젠데 하 너무 어렵다...구글링을 해보니 isNaN()을 사용하던데
그래서 참조해봤다..
function solution(s) {
// s의 길이가 4 혹은 6이 아닐 경우 false를 리턴한다.
if (s.length !== 4 && s.length !== 6) return false;
// 문자열을 하나 씩 가져와 숫자로 변환 되는지 확인하고
// 숫자로 변환되지 못할 경우 false를 리턴한다.
for (let i = 0; i < s.length; i++) {
if (isNaN(s[i])) return false;
}
// 다 통과 했을 경우 true를 리턴한다.
return true;
}
console.log(solution("1234")); // true
console.log(solution("a234")); // false
function solution(arr1, arr2) {
var answer = []; // 새로운 행렬을 저장할 변수
// 행렬의 행 개수만큼 반복
for (let i = 0; i < arr1.length; i++) { // [[1,2],[2,3]]
var row = []; // 현재 행의 결과를 저장할 변수
// 행렬의 열 개수만큼 반복
for (let j = 0; j < arr1[i].length; j++) { //arr1[0] = [1,2]
// 현재 위치의 요소를 더해서 row 배열에 추가
row.push(arr1[i][j] + arr2[i][j]); // [1+3, 2+4]
} // arr1 행i의 열j인 값 + arr2 행i의 열j인 값
// 현재 행의 결과인 row 배열을 answer 배열에 추가
answer.push(row);
}
return answer; // 새로운 행렬을 반환
}
행렬 문제는 다음에 풀게되어도 틀릴거같다,,ㅎㅎㅎ; 머리속에 잘 들어오질 않네