[JS] 프로그래머스 / 삼총사

2025. 1. 9. 17:17·Coding Test

https://school.programmers.co.kr/learn/courses/30/lessons/131705

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

 

 

고등학교 수학에서 배운 '조합' 개념을

코딩으로 어떻게 구현 하는가가 관건.

function solution(number) {
    let len = number.length
    for(let i=2**(len-1); i<2**len; i++) {
        let twoString = [...i.toString(2)]
        if(twoString.filter(x=>x==='1').length===3) {
            console.log(twoString)   
        }
    }
}

 

조합 개념을 어떻게 구현하지 곰곰히 생각하다가 

처음에 떠올랐던 것이 이진수 개념이다.

자릿수가 같은 이진수의 범위를 정하고 1이 3개 있는 이진수를 뽑아내면 되지 않을까?

 

싶었지만.. 우선 처음에 0이 오는 경우를 빼먹었을 뿐더러

코드가 너무 무거워지기 때문에 패스.

 

최종 풀이

 

unction solution(number) {
    let answer = 0;
    let len = number.length
    for (let i=0; i<len-2; i++) {
        for(let j=i+1; j<len-1; j++) {
            for(let k=j+1; k<len; k++) {
                answer += number[i]+number[j]+number[k]===0 ? 1 : 0
            }
        }
    }
    return answer
}

 

이게 되네?

앞서 이중 for문의 비효율성을 충분히 경험했기 때문에

삼중 for문은 생각도 못하고 다른 방법부터 찾아다녔다.

 

조심스레 짜본 코드가 잘 작동되서 신기했다.

다중 for문이라도 연산이 짧으면 성능이 그렇게 저하되는 건 아닌 것 같다. 

 

다른 사람의 풀이

 

function solution(number) {
    let result = 0;

    const combination = (current, start) => {
        if (current.length === 3) {
            result += current.reduce((acc, cur) => acc + cur, 0) === 0 ? 1 : 0;
            return;
        }

        for (let i = start; i < number.length; i++) {
            combination([...current, number[i]], i + 1);
        }
    }
    combination([], 0);
    return result;
}

 

재귀 함수를 이용한 풀이.

아직 재귀함수가 익숙치 않아서 있지 코드 이해하는 데 애를 먹었다.

재귀 함수와 정규식은 꼭 마스터 할 것이다.

 

'Coding Test' 카테고리의 다른 글

[JS] 프로그래머스 / 최소직사각형  (0) 2025.01.19
[JS] 프로그래머스 / 짝지어 제거하기  (0) 2025.01.10
[JS] 프로그래머스 / 숫자의 표현  (0) 2025.01.09
[JS] 프로그래머스 / 바탕화면 정리  (0) 2024.12.23
[JS] 프로그래머스 / 대충 만든 자판  (0) 2024.12.21
'Coding Test' 카테고리의 다른 글
  • [JS] 프로그래머스 / 최소직사각형
  • [JS] 프로그래머스 / 짝지어 제거하기
  • [JS] 프로그래머스 / 숫자의 표현
  • [JS] 프로그래머스 / 바탕화면 정리
freesqqq
freesqqq
Fear only God, Hate only sins
  • freesqqq
    999
    freesqqq
    • Life Log (39)
      • Coding Test (12)
      • JavaScript (6)
      • TypeScript (2)
      • React (4)
      • Vue (0)
      • Next.js (1)
      • Html & css (0)
      • Git & Github (0)
      • Noising Log (1)
      • Reading Log (8)
      • Projects 🚀 (5)
        • Goodiary (AI 일기 사이트) (0)
        • Readiping (독서 커뮤니티) (1)
        • Couchilla (음반 거래 플랫폼) (4)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 글쓰기
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    프로그래머스
    크기가 작은 부분 문자열
    supabase
    죽음에이르는병
    대충만든자판
    코테
    자바스크립트
    프머스
    유신론적실존주의
    미루는습관
    js
    Lv.1
    수파베이스
    javascript
    코딩테스트
    그릿
    자기계발
    자바스크립트상속
    reduxtoolkit
    힘든일을먼저하라
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
freesqqq
[JS] 프로그래머스 / 삼총사
상단으로

티스토리툴바