알고리즘

프로그래머스 JS | 행렬 테두리 회전하기

2022. 7. 6. 16:25
출처: 프로그래머스 - 코딩테스트 연습 - 2021 Dev-Matching: 웹 백앤드 개발 - 행렬 테두리 회전하기

 

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

로직은 생각보다 어렵지 않을 것이라고 생각했는데, 코드를 작성하다보니 코드가 길어져 어려움을 겪었던 문제이다.

거의 하루 종일 코드를 작성했는데, 테스트 케이스만을 겨우 넘기고 정확성을 9.1 밖에 나오지 않았던 문제이다.

 

❌ Solution (정확성 9.1점)

function solution (rows, columns, queries) {
  const answer = [];
  
  // 1. 행렬 생성
  let matrix = Array(rows).fill(0).map((_,i) => Array(columns).fill(0).map((_, j) => i * columns + j + 1));
  
  // 2. queries 돌리기
  for( let i = 0; i < queries.length; i++) {
    const [x, y, xx, yy] = queries[i];
    rotate(x-1, y-1, xx-1, yy-1);
  }
  
  // 3. queries 에 맞춰서 회전(rotate 시키기)
	function rotate(x, y, xx, yy) {
    let cur = matrix[x][y];
    let next;
    let min = cur;
    
    for(let i = y+1; i <= yy; i++){
      next = matrix[x][i];
      matrix[x][i] = cur;
      cur = next;
      if( cur < min) min = cur;
    }
    
    for(let i = x+1; i <= xx; i++) {
      next = matrix[i][yy];
      matrix[i][yy] = cur;
      cur = next;
      if( cur < min) min = cur;
    }

    for(let i = yy-1; i > y-1; i--) {
      next = matrix[xx][i];
      matrix[xx][i] = cur;
      cur = next;
      if( cur < min) min = cur;
    }

    for(let i = xx-1; i > x-1; i--) {
      next = matrix[i][x];
      matrix[i][x] = cur;
      cur = next;
      if( cur < min) min = cur;
    }
    
    answer.push(min);
  }
  return answer;
}
💡 matrix를 콘솔창에서 확인을 할 때, 모든 queries[i]에 해당하는 반복문을 실행 시킨 결과가 콘솔에 출력되는데, 첫번째 queries 작업만 실행 시킨 값으로 기대하고 체크하여 잘못된 부분을 쉽게 찾지 못했다. 
✅ 내가 작성한 코드가 무엇이 어디가 틀린 것인지 잘 이해가 되지 않는다.

'알고리즘' 카테고리의 다른 글

프로그래머스 JS | 괄호변환  (0) 2022.07.28
백준 JS | 11729번 하노이 탑 이동 순서  (0) 2022.07.07
프로그래머스 JS | 오픈채팅방  (0) 2022.07.02
프로그래머스 JS | [1차] 다트게임  (0) 2022.06.30
프로그래머스 JS | 이상한 문자 만들기  (0) 2022.06.29
'알고리즘' 카테고리의 다른 글
  • 프로그래머스 JS | 괄호변환
  • 백준 JS | 11729번 하노이 탑 이동 순서
  • 프로그래머스 JS | 오픈채팅방
  • 프로그래머스 JS | [1차] 다트게임
3jun
3jun
3jun3jun 님의 블로그입니다.
3jun
3jun
3jun
전체
오늘
어제
  • 분류 전체보기 (94)
    • 프로젝트 (5)
    • Web (9)
    • JavaScript (19)
    • React (12)
    • 알고리즘 (31)
    • Git (3)
    • AWS (3)
    • TypeScript (3)
    • CS (2)
    • Error (6)
    • 회고 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 백준 js
  • Promise
  • msw
  • 자바스크립트
  • msw 에러
  • 유효성 로직
  • 백준 알고리즘
  • react
  • 백준js
  • 프로그래머스 js
  • airbnb style guide
  • outer environment
  • 프로그래머스 코테
  • 백준 온라인저지
  • this.props.history.push
  • 백준 코테
  • 프로그래머스 코딩테스트
  • JavaScript
  • state
  • 프로그래머스 코딩테스트 js

최근 댓글

최근 글

hELLO · Designed By 정상우.
3jun
프로그래머스 JS | 행렬 테두리 회전하기
상단으로

티스토리툴바

단축키

내 블로그

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

블로그 게시글

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

모든 영역

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

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