새소식

알고리즘 테스트 ⏲/프로그래머스

[프로그래머스] 바탕화면 정리 풀이 / JavaScript

  • -
 

프로그래머스

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

programmers.co.kr

 

작성 코드 (1차 시도 / 통과)

 

function solution(w) {
  let wx = w[0].length;
  let wy = w.length;
  let x, y, dx, dy;
  for (let i = 0; i < wy; i += 1) {
    if (w[i].includes("#")) {
      x = i;
      break;
    }
  }
  lp1: for (let i = 0; i < wx; i += 1) {
    for (let j = 0; j < wy; j += 1) {
      if (w[j][i] === "#") {
        y = i;
        break lp1;
      }
    }
  }
  for (let i = wy - 1; i >= 0; i -= 1) {
    if (w[i].includes("#")) {
      dx = i;
      break;
    }
  }
  lp2: for (let i = wx - 1; i >= 0; i -= 1) {
    for (let j = wy - 1; j >= 0; j -= 1) {
      if (w[j][i] === "#") {
        dy = i;
        break lp2;
      }
    }
  }
  return [x, y, dx + 1, dy + 1];
}

 

구현 로직

꾸역꾸역 탐색하는 방법입니다. 행과 열에 존재하는 가장 좌측(x)/위(y)에 존재하는 파일들의 교차점(x, y)과 가장 우측(dx)/아래(dy)에 존재하는 파일들의 교차점(dx, dy)만 알면 되기 때문에 2차원 순회를 하며 발견한 교차점의 좌표를 각각 return해주면 됩니다.

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.