백준 알고리즘/Lang-node.js

[백준/node.js] 1439번 뒤집기

Jongung 2022. 3. 19. 00:19

https://www.acmicpc.net/problem/1439

 

1439번: 뒤집기

다솜이는 0과 1로만 이루어진 문자열 S를 가지고 있다. 다솜이는 이 문자열 S에 있는 모든 숫자를 전부 같게 만들려고 한다. 다솜이가 할 수 있는 행동은 S에서 연속된 하나 이상의 숫자를 잡고 모

www.acmicpc.net

 

  • 사용언어 : node.js
  • 알고리즘 : 문자열, 그리디 알고리즘
  • Solved.ac Tier : Silver V

 

 

 

node.js 코드

1. 문제 정리

0과 1로 이루어진 문자열울 준다. 다솜씨가 이 문자열을 한 ㅅ수자로 만들려고 한다.

Ex) S= 0001100일때 0000000로 만드는데 단 한번이면 된다. 

예시처럼 setNumber로 answer_cnt1은 0으로 바꿀때 총 몇 번 바꿔야 하나 쳐주고 answer_cnt2는 1로 바꿀때 총 몇 번 바뀌는지 코드로 작성 해주었다.

 

 

2. 완성 코드

const fs = require('fs');
let input = fs.readFileSync("/dev/stdin").toString().trim().split('');
let setNumber = 0, answer_cnt1 = 0, answer_cnt2 = 0;;

for(let i = 0; i < input.length; i++){
    if(setNumber !== parseInt(input[i])){
        if(i===0){
            answer_cnt1++;
        }
        else{
            if(input[i] !== input[i - 1]){
                answer_cnt1++;
            }
        }
    }
}
setNumber = 1;
for(let i = 0; i < input.length; i++){
    if(setNumber !== parseInt(input[i])){
        if(i===0){
            answer_cnt2++;
        }
        else{
            if(input[i] !== input[i - 1]){
                answer_cnt2++;
            }
        }
    }
}

console.log(Math.min(answer_cnt1,answer_cnt2))