Notice
Recent Posts
Recent Comments
Link
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Tags
more
Archives
Today
Total
관리 메뉴

다재다능 개발자 성장기 🚀

항해99 👩‍💻11일차 TIL 본문

항해99_6기_TIL

항해99 👩‍💻11일차 TIL

merrytang 2022. 3. 18. 08:03

🎉오늘의 한 일🎉

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가 주어집니다. 배열 arr의 각 원소는 숫자 0부터 9까지로 이루어져 있습니다. 이때, 배열 arr에서 연속적으로 나타나는 숫자는 하나만 남기고 전부 제거하려고 합니다. 단, 제거된 후 남은 수들을 반환할 때는 배열 arr의 원소들의 순서를 유지해야 합니다. 예를 들면,
  • 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