알고리즘 풀다 죽은 개발자가 때깔도 곱다
1. 문자열 내림차순으로 배치하기
간단하고 쉬워보이는 문제이다
이전에 풀었던 정수 내림차순으로 나열하기 와 같은 맥락이다
sort 정렬 시 대문자가 소문자 앞에 오던가 뒤에 오던가 헷갈리는 부분이 있긴한데...
해보면 알 것이다
function solution(s) {
s= s.split('').sort();
return s
}
대문자가 소문자보다 앞에 오기 때문에 다행이다.
이러면 여기서 역순 reverse 적용하고 join하면 끝이다
function solution(s) {
s= s.split('').sort().reverse().join('');
return s
}
2. 부족한 금액 계산하기
1회 이용시마다 기본 금액에 무려 100% 할증이 붙는 놀이공원이 되었다
내가 생각 한 방법은
반복문으로 count 까지의 총 요금을 구하고,
소지금 money 에서 총 요금을 뺀 결과가 0 이상이면 0으로 출력,
음수면 (-) 부호만 떼줘서 출력 이다.
여기서, 음수 부호만 떼는법만 배워오면 될듯하다
Math.abs();
= () 내의 수가 음수일 경우 양수로 바꿔준다
function solution(price, money, count) {
var answer = 0;
for(var i = 1; i <= count ; i++) {
answer += price * i
}
answer = money - answer >= 0 ? 0 : Math.abs(money- answer);
return answer;
}
위에서 설명한 그대로의 코드가 되었다
상당히 부끄럽게도, Math.abs는 필요가 없었다
부족한 금액에 초점을 맞춘 나머지 -를 지워야 한다는 생각을 했는데,
애초에 money - answer 가 음수인 경우라면, answer -money 를 하면 양수로 나오는 것이었다
return money - answer >= 0 ? 0 : answer - money;
이렇게 !
3. 문자열 다루기 기본
갑자기 '기본' 이라는 문제가 튀어나온걸 보니
아직 못배운 영역이 나왔을것이 분명하다.
아니나 다를까, 간단해보이는 문제이지만 어떻게 해결해야 할 지 모르겠다.
길이 4 || 6 체크는 쉽겠지만, 문자열을 포함할때 true false를 나누는 법을 모르겠다
답을 알아내기 위해 검색을 하다가
parseInt(); 를 활용하는 것을 보았다.
parseInt() 는 , 문자열을 숫자로 반환하는, 기존에 알고있던 함수이다.
여기서 중요한건, parseInt() 는 정확하게
(숫자로 바꿀수 있는것) ~ (숫자로 바꿀 수 있는것) 까지만 반환한다.
즉 "a123" 처럼 알파벳으로 시작하는 경우 반환될 값이 없어 NaN 가 출력된다.
"123a456" 의 경우, 알파벳 a의 이전까지인 123 까지만 반환이 된다.
이 문제를 풀기 위한 핵심은
숫자 이외 불순물이 하나라도 있다면 기존의 값과 달라진다는 것이다.
"a123" == parseInt("a123") ==> false 라는 말이다
이것으로 문자열을 포함하는지를 체크할 수 있다.
최선인지는 모르겠지만 말이다
function solution(s) {
var answer = 0;
if ( s.length == 6 || s.length ==4 ) {
if ( s == parseInt(s)) { return true}
else return false;
}
else return false;
return answer;
}
쓰이지도 않은 answer 를 버리고
조건문을 조금 깔끔하게 고치면
function solution(s) {
if((s.length == 4 || s.length ==6) && (s == parseInt(s))) { return true}
else return false;
}
를 삼항연산자로
function solution(s) {
return (s.length ==4 || s.length == 6) && (s== parseInt(s)) ? true : false
}
이렇게 쓸 수 있다..
'사전캠프' 카테고리의 다른 글
28일차 - SQL 문제 풀이 (0) | 2024.07.30 |
---|---|
27일차 - 알고리즘 풀이 (0) | 2024.07.29 |
25일차 - 알고리즘 풀이 (3) | 2024.07.24 |
24일차 - 알고리즘 풀이 (1) | 2024.07.23 |
23일차 - 알고리즘 풀이 (3) | 2024.07.22 |