다재다능 개발자 성장기 🚀
항해99 👩💻11일차 TIL 본문
🎉오늘의 한 일🎉
1. 알고리즘 테스트를 보았다! 처음엔 긴장해서 잘 안풀렸는데, 이전에 공부했던 개념들이 응용되서 나온 문제였기에 차분히 하나씩 풀다보니 잘 풀 수 있었던 것 같다 🥰 코드도 깔끔하게 잘 짜서 기분이 좋았다.
🥰자바스크립트 알고리즘 풀이🥰
3진법 뒤집기
문제 설명
자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요.
- n은 1 이상 100,000,000 이하인 자연수입니다.
풀이
function solution(n) {
var answer = 0;
var a = n.toString(3).split('').reverse().join('');
var decimal = parseInt(a, 3);
return decimal
}
⭐ 10진법을 n진법을 변환시키는 n.toString(3) 함수와, n진법을 10진법으로 변환시키는 parseInt(n, 3) 함수를 사용하여 쉽게 풀이하였다.
같은 숫자는 싫어
문제 설명
- arr = [1, 1, 3, 3, 0, 1, 1] 이면 [1, 3, 0, 1] 을 return 합니다.
- arr = [4, 4, 4, 3, 3] 이면 [4, 3] 을 return 합니다.
배열 arr에서 연속적으로 나타나는 숫자는 제거하고 남은 수들을 return 하는 solution 함수를 완성해 주세요.
- 배열 arr의 크기 : 1,000,000 이하의 자연수
- 배열 arr의 원소의 크기 : 0보다 크거나 같고 9보다 작거나 같은 정수
풀이
function solution(arr){
var answer = [];
for(let i=0;i<arr.length;i++){
if(arr[i] !== arr[i+1]){
answer.push(arr[i])
}
}
return answer;
}
⭐ 처음 풀이할 땐 현재의 값과 현재값 다음 자리의 값을 비교하여 같을 때 현재값을 삭제해주는 로직으로 풀려고 했는데, 풀리지 않아서 반대로 현재와 다음값이 같지 않을 때에만 현재값을 answer 변수에 넣어주는 식으로 생각하니 풀 수 있었다.
두 개 뽑아서 더하기
문제 설명
정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요.
제한사항
- numbers의 길이는 2 이상 100 이하입니다.
- numbers의 모든 수는 0 이상 100 이하입니다.
function solution(numbers) {
// var answer = [];
var a = [];
for(let i=0;i<numbers.length;i++){
for(let j=i+1;j<numbers.length;j++){
a.push(numbers[i]+numbers[j])
}
}
let answer = [...new Set(a)];
return answer.sort((a,b)=>a-b);
}
⭐ 처음엔 이중for문으로 서로 다 더한 뒤 중복제거 함수를 쓰려했는데 계속 풀리지 않아서 ㅠ 팀원분께 여쭤봐서 풀 수 있었다. 핵심은 규칙이었다. 서로다른 수를 더해야 되기에 j 는 항상 i 보다 1이 커야되는게 규칙이었다. 그래서 j의 초기값을 i+1로 해주니 문제를 풀 수있었다. 이번 문제르 통해 손코딩의 중요성을 느낄 수 있었다. 로직을 짜기전 규칙을 찾자!
🍧느낀점🍧
1. 이번 알고리즘 주차 때 너무 많은 것을 얻었다. 내가 혼자 생각하면서 알고리즘 문제를 풀 수 있게 되었다는 것에 보람을 느낀다! 공부를 하다보니 확실히 이제 코드가 깔끔한지 가독성이 좋은지 등이 눈에 들어오기 시작했고 더 예쁜? 코드를 위한 욕심도 생기게 되었다. 또 코드를 내 입맛대로 수정할 수 있는 구현력도 어느정도 길러진 것 같다. 일주일이었지만 매일 밥먹고 자는시간 제외하고는 올인해서 문제를 풀다보니 실력이 안 늘 수 없었던 것 같다 ㅋㅋ 앞으로 가야할 길이 많지만 그래도 기본적인 토대와 자신감은 키운 것 같다 : ) 알고리즘 팀원들과 앞으로도 비공식적 팀으로 알고리즘 문제를 풀고 매 주 일요일 인증하는 스터디를 만들었다. 최소 일주일에 2~4문제씩은 꾸준히 풀면서 실력을 쌓아나가야겠다 : ) 화이팅!! 🥰👍👍🧡
'항해99_6기_TIL' 카테고리의 다른 글
항해99 👩💻13일차 TIL (0) | 2022.03.20 |
---|---|
항해99 👩💻12일차 TIL (0) | 2022.03.20 |
항해99 👩💻10일차 TIL (0) | 2022.03.16 |
항해99 👩💻9일차 TIL (0) | 2022.03.15 |
항해99 👩💻8일차 TIL (0) | 2022.03.15 |