jiho_bae
Go devlog
jiho_bae
전체 방문자
오늘
어제
  • 분류 전체보기 (158)
    • JavaScript (38)
      • theory (34)
      • vanilla (4)
    • HTML & CSS (2)
    • Browser (3)
    • CS (6)
      • linux (1)
      • shell (2)
      • compiler (2)
    • DS & Algorithm (87)
      • theory (5)
      • basic (7)
      • programmers (30)
      • baekjoon (45)
    • Design Pattern (2)
    • Error (4)
    • Git & Github (4)
    • Tools (1)
    • 부트캠프 (4)
    • Small Tips (2)
    • Java (3)
    • test (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 자바스크립트 채팅방 스크롤
  • 13460 javascript nodejs
  • safari invalid date error
  • 퀵정렬 자바스크립트
  • 카카오 코딩테스트 양궁대회 nodeJS
  • JavaScript
  • 억억단을 외우자 javascript
  • fetch 취소하기
  • 외벽 점검 javascript
  • 프로그래머스 숫자카드나누기 javascript
  • safari Date format NaN
  • 자바스크립트 배열의 특수함
  • 병합정렬 자바스크립트
  • 자바스크립트 이벤트 위임
  • 백준 17406 nodeJS
  • 계수정렬 자바스크립트
  • 덧칠하기 javascript
  • 자바스크립트 커링
  • 백준 자바스크립트 입력 템플릿
  • javascript use strict
  • 가사 검색 자바스크립트
  • 대충만든자판 javascript
  • 리액트 프로젝트 디버깅하기
  • 깃 이전 커밋에서 새 브랜치 만들기
  • 자바스크립트 비동기 마이크로 태스크 큐와 렌더링 과정
  • 25632 소수 부르기 게임
  • 리코쳇 로봇 javascript
  • 자바스크립트 sort는 왜 그모양일까
  • 1753 최단경로 javascript
  • 자바스크립트 모듈 시스템

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
jiho_bae

Go devlog

DS & Algorithm/baekjoon

[백준] 2529번 부등호 - JavaScript(NodeJS)

2021. 6. 4. 18:18

문제

 

2529번: 부등호

두 종류의 부등호 기호 ‘<’와 ‘>’가 k개 나열된 순서열  A가 있다. 우리는 이 부등호 기호 앞뒤에 서로 다른 한 자릿수 숫자를 넣어서 모든 부등호 관계를 만족시키려고 한다. 예를 들어, 제

www.acmicpc.net

 

풀이

Brute Force(무차별 대입, 무식하게 풀기?) 문제이다.

 

정수의 개수 k의 범위가 2<=k<=9 이므로
가능한 모든 경우의 수를 탐색해도 충분하다.

 

숫자 사이에는 부등호가 들어가는데, 부등호를 만족시키는 숫자가 배치되면 된다.

 

예를 들면,

1<2<5>4<6 와 같이 부등호를 만족시키는 수 중에서, 모든 부등호를 제거했을 때의 문자를 가지고 최댓값과 최솟값 구한다.

 

간단한 방문 배열을 선언했고
재귀함수에서 부등호에 따라 부등호 앞 숫자보다 크거나 작은 숫자를 순차적으로 선택해서 모두 조회한다.


부등호를 모두 사용했다면, 성공적으로 부등호를 만족하는 숫자 배치를 마친 것.

이 시점에서 숫자의 최대 최소 여부를 판단한다.

 

 

※ 주의사항

예시 정답을 보면 897, 021이 출력된다.

즉 숫자 값을 문자열 형태로 출력해야 한다.

 

자바스크립트에서는 숫자를 담은 문자열끼리도 부등호로 크기 비교가 가능하다.

예를 들어 "15" > "03" = true /  "33" > "53" = false 가 출력된다.

 

이를 이용해서 문자열 형태의 숫자들 간 크기 비교를 통해 최대최소 여부를 판단해보자.

 

코드를 보자.

코드

const sol = (input) => {
  const N = +input[0];
  const inequality = input[1].split(" ");
  const visit = new Array(10).fill(0);
  let max = String(Number.MIN_SAFE_INTEGER); 
  let min = String(Number.MAX_SAFE_INTEGER); // min, max를 문자열 형태로 선언한다.

  function dfs(L, prev, result) {
    if (L === N) { // L=N 이라면 모든 부등호가 사용 된 것
      max = result > max ? result : max;
      min = result < min ? result : min;
      return;
    }
    if (inequality[L] === "<") {
      for (let i = prev + 1; i < 10; i++) { // 부등호가 < 이면 전 숫자보다 큰 숫자에서 사용 가능 여부를 판단
        if (visit[i]) continue;
        visit[i] = 1;
        dfs(L + 1, i, result + i); // result + i 는 문자열이다. 즉, "02" + "1" => "021" 형태.
        visit[i] = 0; // 재귀적으로 visit 배열을 계속 사용해야 하므로 사용 가능 여부를 없애고 재귀가 끝나면 다시 부여한다.
      }
    } else {
      for (let i = prev - 1; i > -1; i--) { // 부등호가 > 이면 전 숫자보다 작은 숫자에서 사용 가능 여부를 판단
        if (visit[i]) continue;
        visit[i] = 1;
        dfs(L + 1, i, result + i);
        visit[i] = 0;
      }
    }
    return;
  }

  for (let i = 0; i < 10; i++) { // 첫 숫자가 0~9까지 모두 조회하면 된다.
    visit[i] = 1;
    dfs(0, i, `${i}`);
    visit[i] = 0;
  }

  return `${max}\n${min}`;
};

// 백준에서 입력을 받는 코드
const input = [];
require("readline")
  .createInterface(process.stdin, process.stdout)
  .on("line", (line) => {
    input.push(line);
  })
  .on("close", () => {
    console.log(sol(input));
    process.exit();
  });
저작자표시 (새창열림)

'DS & Algorithm > baekjoon' 카테고리의 다른 글

[백준] 14888번 연산자 끼워넣기 - JavaScript(NodeJS)  (0) 2021.06.04
[백준] 1339번 단어 수학 - JavaScript(NodeJS)  (0) 2021.06.04
[백준] 1967 트리의 지름 - JavaScript(NodeJS)  (0) 2021.06.03
[백준] 1167번 트리의 지름 - JavaScript(NodeJS)  (0) 2021.06.03
[백준] 11725번 트리의 부모 찾기 - JavaScript(NodeJS)  (0) 2021.06.03
    'DS & Algorithm/baekjoon' 카테고리의 다른 글
    • [백준] 14888번 연산자 끼워넣기 - JavaScript(NodeJS)
    • [백준] 1339번 단어 수학 - JavaScript(NodeJS)
    • [백준] 1967 트리의 지름 - JavaScript(NodeJS)
    • [백준] 1167번 트리의 지름 - JavaScript(NodeJS)
    jiho_bae
    jiho_bae
    하루에 한 걸음씩

    티스토리툴바