개발관련/매일 코딩 테스트 챌린지

프로그래머스 무인도 버티기 자바스크립트

2023. 4. 15. 21:48
반응형
function solution(maps) {
    const xLen = maps.length
    const yLen = maps[0].length
    
    const vistedMap = Array.from(Array(xLen),()=>Array(yLen).fill(false))
    
    const offset = [
        [-1,0], //좌
        [1,0], //우
        [0,-1], //상
        [0,1], //하
    ]
    
    const answer = []
    
    function sumCountArea(x,y){
        const stack = [[x,y]]
        let count = maps[x][y]*1
        
        while(stack.length > 0){
            const [xP,yP] = stack.pop()
            offset.forEach(([moveX,moveY])=>{
                const nX = xP + moveX
                const nY = yP + moveY
                if(nX >= 0 && nX < xLen && nY >= 0 && nY < yLen && !vistedMap[nX][nY]  && maps[nX][nY] != "X"){
                    vistedMap[nX][nY] = true
                    count += maps[nX][nY]*1
                    stack.push([nX,nY])
                }
            })         
        }
        
        answer.push(count)
    }
    
    for(let i = 0; i < xLen; i++){
        for(let j = 0; j < yLen; j++){
            if(vistedMap[i][j] || maps[i][j] == "X"){
                continue
            }
            vistedMap[i][j] = true
            sumCountArea(i,j)
        }
    }
    console.log(answer)
    answer.sort((a,b)=>a-b)
    return answer.length > 0 ? answer: [-1]
}

 

총합, 최단거리

 

대부분 비슷하다.

 

2차배열이 주어질때

 

2차배열을 만들어서 방문여부를 체크하고

 

stack이나 que로 총합을 구하는게 비슷함

 

중요한건 루프문을 각자 짜는것

반응형
저작자표시 비영리 변경금지 (새창열림)

'개발관련 > 매일 코딩 테스트 챌린지' 카테고리의 다른 글

자바스크립트 코딩 테스트 구름 문제 연속 점수 문제  (0) 2023.07.06
[자바스크립트] 코딩테스트 큰 팩토리얼  (0) 2023.07.06
[코딩테스트 준비]자바스크립트 그리드 알고리즘 코딜리티 연습 javascript algorithm codility greedy  (1) 2023.04.13
[프로그래머스] 제일 작은 수 제거하기 (JavaScript)  (0) 2020.10.02
[프로그래머스] 행렬의 덧셈 (JavaScript)  (0) 2020.09.21
"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."
개발자 Dane
개발자 Dane
IT / 테크 전문 크리에이터 데인 입니다.
개발자 Dane
개발자 Dane의 IT 전문 블로그
개발자 Dane
반응형
  • 분류 전체보기 (170)
    • 개발관련 (24)
      • 프론트엔드 지식 (11)
      • 매일 코딩 테스트 챌린지 (27)
      • 자바스크립트 팁 (32)
      • 리액트 (11)
    • 얼리어답터 (11)
    • 팁 (13)
    • 게임 (18)
      • 디아블로2레저렉션 (16)
    • 운동하는 후니 (2)
전체
오늘
어제

태그

  • Next.js
  • 바바리안
  • 디아블로4
  • javascript
  • PNP
  • 문자열정렬
  • vscode
  • 디아블로2레저렉션
  • 프로그래머스
  • 디아블로2
  • 애플페이
  • s3
  • Gatsby
  • React
  • 리액트
  • docker
  • 코딩테스트
  • 아이폰
  • 자바스크립트
  • 문자열
  • 레저렉션
  • AWS
  • 갤럭시긱벤치
  • 룬워드방패
  • gos
  • 갤럭시성능뻥튀기
  • 갤럭시소비자기만
  • 도커
  • GOS해제
  • yarn

최근 댓글

hELLO · Designed By 정상우.
개발자 Dane
프로그래머스 무인도 버티기 자바스크립트
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.