- 오늘 푼 문제가 많아서 결국 나눠서 벨로깅하게되네,,, ㅠㅠ,.ㅠ 머리가 터질거같다
<오늘의 문제>
- 핸드폰 번호 가리기 1레벨
- 없는 숫자 더하기 1레벨
- 제일 작은 수 제거하기 1레벨
- 가운데 글자 가져오기 1레벨
1. 핸드폰 번호 가리기
function solution(phone_number) {
var answer = '';
for(let i = 0; i < phone_number.length - 4 ; i++) {
answer = answer + "*"
}
answer = answer + phone_number.slice(phone_number.length - 4);
return answer;
}
- 나의 풀이
: 문제를 처음 읽고 와 쉬운문젠가? 했는데 자꾸 꼬리에 꼬리를 물고 생각을하게되는 문제였다;
일단 phone_number 값의 길이에 -4를 해서 뒤의 4자리만 남기고 값을 전부 로 변환했다.
그리고 이 들어간 answer값에 뒤에 4자리만 붙이려고 slice()
를 사용해서 잘라낸 뒤 값을 냈다.
.slice(phone_number.length - 4)
이 부분은 사실 내가 가독하기 좋게 일부로 쓴값이고, slice(-4)
만 써도된다..ㅎ...
2. 없는 숫자 더하기
function solution(numbers) {
var answer = 0;
for(let i = 0; i <= 9; i++) {
if(!numbers.includes(i)) {
answer += i;
}
}
return answer;
}
- 나의 풀이
: numbers 안에는 0~9까지의 숫자가 나열되어있고, 그 안에 없는 숫자만 빼서 더한값을 출력하는 문제..여서 문제이해는 쉬웠는데..
if 문으로 만약 numbers안에 i값이 없다면 그값을 answer에 i를 카운팅해줘.. 입니다..
includes()
는 그 괄호안의 값을 뾱 하고 찾아내는 기능이다. 배열안에 요소값이 많을경우 실행속도가 느려지니 그럴땐 권장하지않습니다.
function solution(numbers) {
var answer = 0;
var result;
for (let i = 0; i < numbers.length; i++) {
answer += numbers[i]
}
result = 45 - answer
return result;
}
- 다른 사람 풀이
: 일단 현재 배열안의 요소값을 전부 더해주고 ! 더한값엔 결국 포함되지않은 요소들의 값이 빠져있겠지??? ㅎㅎㅎㅎㅎㅎ
0~9까지의 총 합은 45이고 그 값에서 answer값을 빼주면 남은 요소의 합이 나와서 그 값을 retrun !
생각도 못한 풀이였다 ㅂㄷㅂㄷ ㅎㅎ..
3. 제일 작은 수 제거하기
function solution(arr) {
let min = Math.min(...arr);
let minIndex = arr.indexOf(min);
arr.splice(minIndex, 1);
return arr.length > 0 ? arr : [-1];
}
- 나의 풀이
: 일단 arr에서 최솟값을 뽑아내고, 그 값의 인덱스를 찾아낸다.
그리고 splice()
을 이용해서 배열에서 최솟값을 삭제한다.
배열에 뭔가 있으면 arr을 그대로 출력하고, 배열이 비었으면 -1를 출력하다.
4. 가운데 글자 가져오기
function solution(s) {
var answer = '';
if (s.length % 2 == 0) {
answer = s[s.length / 2 - 1] + s[s.length / 2];
} else {
answer = s[Math.floor(s.length / 2)];
}
return answer;
}
- 나의 풀이
: 난 이 문제에서 머리를 쥐어짰다 왜지?? 다른사람들은 공짜문제같았단다.. 난 왜....왜??? 왜 ㅠㅠ
문제 자체의 이해는 쉬웠다.. 단어의 길이가 홀수이면 가운데 한글자, 짝수이면 가운데 두글자를 뽑아서 그 값을 retrun하는 것
주석으로 예시를 들어서 풀이하면 쉬웠당,,, 저렇게 length를 나누고 더하고 빼고 하는게 낯설어서 생각해내지 못했던 것 같다.
s값을 [] 를 이용해서 바로 인덱스값으로 만드는게 확실히 풀이에는 좋았다.
function solution(s) {
var answer = '';
let a = 0;
let b = 0;
if (s.length % 2 != 0) {
a = s.length / 2;
a = Math.floor(a);
return answer = s[a];
} else {
b = s.length / 2;
return answer = s[b - 1] + s[b];
}
for (let i = 0; i < a.length; i++) {
}
}
- 다른 사람 풀이
: 풀이 내용은 같은데, []안에 바로 대입했으면 보기 쉬웠을거같다. 참조하는 이유는 저렇게 let a = 0, let b = 0 이라고
명시해서 푸는 난 너무 어색해서이다.. 아직 손에 익지않았다 ..ㅠㅠ