[JS] 공원 산책

2024. 11. 27. 18:20·코딩테스트
목차
  1. 문제
  2. 자료구조/알고리즘, 시간복잡도, 소요시간
  3. 코드
  4. 회고

문제

프로그래머스 코딩테스트 연습 : 공원 산책

 

자료구조/알고리즘, 시간복잡도, 소요시간

  • 자료구조/알고리즘: -
  • 시간 복잡도: O(n)
  • 소요 시간: 40분

 

코드

function move(park, position, route) {
    let isMoved = true;
    const initializePosition = [position[0], position[1]];
    const [direction, count] = route.split(" ");
    
    for(var i = 0; i < count; i++) {
        let [current_y, current_x] = position;
        
        switch(direction) {
            case 'N' :
                if( current_y - 1 < 0 ||
                   park[current_y - 1].split("")[current_x] === 'X' ) {
                    isMoved = false;
                    i = count;
                } else {
                    position[0] = current_y - 1; 
                }
                
                break;
            case 'S' :
                if( current_y + 1 >= park.length ||
                   park[current_y + 1].split("")[current_x] === 'X' ) {
                    isMoved = false;
                    i = count;
                } else {
                    position[0] = current_y + 1; 
                }
                
                break;
            case 'W' :
                if( current_x - 1 < 0 ||
                   park[current_y].split("")[current_x - 1] === 'X' ) {
                    isMoved = false;
                    i = count;
                } else {
                    position[1] = current_x - 1; 
                }
                
                break;
            case 'E' :                
                if( current_x + 1 >= park[0].length ||
                   park[current_y].split("")[current_x + 1] === 'X' ) {
                    isMoved = false;
                    i = count;
                } else {
                    position[1] = current_x + 1; 
                }
                
                break;
        }
    }
    
    return isMoved ? position : initializePosition ;
}

function solution(park, routes) {
    let position = [0,0];
    
    park.forEach((coords, index) => {
        if(coords.split("").findIndex((value) => value === "S") !== -1) {
            position = [index, coords.split("").findIndex((value) => value === "S")];
        }
    })
    
    routes.forEach((route) => {
        position = move(park, position, route);
    })
    
    return position;
}

 

회고

저작자표시 변경금지 (새창열림)

'코딩테스트' 카테고리의 다른 글

[JS] [PCCP 기출문제] 1번 / 동영상 재생기도움말  (0) 2024.11.04
[JS] 과일 장수  (0) 2024.05.14
[JS] 기사단원의 무기  (0) 2024.05.01
[JS] 명예의 전당 (1)  (0) 2024.04.29
[JS] 문자열 나누기  (0) 2024.04.29
  1. 문제
  2. 자료구조/알고리즘, 시간복잡도, 소요시간
  3. 코드
  4. 회고
'코딩테스트' 카테고리의 다른 글
  • [JS] [PCCP 기출문제] 1번 / 동영상 재생기도움말
  • [JS] 과일 장수
  • [JS] 기사단원의 무기
  • [JS] 명예의 전당 (1)
설탕시럽
설탕시럽
설탕시럽의 Web Tech Blog 입니다.
SugarSyrup Tech Blog설탕시럽의 Web Tech Blog 입니다.
  • 설탕시럽
    SugarSyrup Tech Blog
    설탕시럽
  • 전체
    오늘
    어제
    • 분류 전체보기 (50)
      • HTML & CSS (2)
      • JavaScript (6)
      • React (17)
      • Node (1)
      • BackEnd (1)
      • 회고 (5)
        • 엄브렐라 개발일지 (1)
        • 인턴 회고!!! (2)
      • 컴퓨터 기초 (4)
        • 운영체제 (2)
        • SICP (1)
      • 코딩테스트 (10)
      • 짧은 글 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    level1
    리액트
    JS
    EC2
    TypeScript
    오블완
    docker
    php
    nginx
    CodingTest
    React
    인턴
    프론트엔드
    에러
    top-level await
    css
    타입스크립트
    AWS
    운영체제
    티스토리챌린지
    document
    자바스크립트
    회고
    SQL
    JavaScript
    Element
    배포
    코딩테스트
    프로그래머스
    error
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
설탕시럽
[JS] 공원 산책
상단으로

티스토리툴바

단축키

내 블로그

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

블로그 게시글

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

모든 영역

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

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