[백준 알고리즘] 1439번: 뒤집기 (JavaScript / JS / 자바스크립트)

2023. 6. 24. 09:41·알고리즘/백준
문제

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

예를 들어 S=0001100 일 때,

  1. 전체를 뒤집으면 1110011이 된다.
  2. 4번째 문자부터 5번째 문자까지 뒤집으면 1111111이 되어서 2번 만에 모두 같은 숫자로 만들 수 있다.

하지만, 처음부터 4번째 문자부터 5번째 문자까지 문자를 뒤집으면 한 번에 0000000이 되어서 1번 만에 모두 같은 숫자로 만들 수 있다.

문자열 S가 주어졌을 때, 다솜이가 해야하는 행동의 최소 횟수를 출력하시오.

 

입력
 
첫째 줄에 문자열 S가 주어진다. S의 길이는 100만보다 작다.
 
 
출력

첫째 줄에 다솜이가 해야하는 행동의 최소 횟수를 출력한다.

 

예제 입력
0001100

 

예제 출력
1

문제 접근

최적해를 찾는 간단한 그리디 알고리즘이다.

인접한 같은 숫자들은 한번에 뒤집을 수 있으므로 하나의 숫자와 같이 취급할 수 있다.

ex) 0001100 -> 010

여기에 규칙성을 찾으면 쉽게 풀 수 있다.

문자열 뒤집는 횟수 length
0 / 1 0 1
01 1 2
010 1 3
0101 2 4
01010 2 5
010101 3 6
0101010 3 7

따라서 숫자가 변화하는 구간만 카운트로 체크하고 이러한 규칙으로 계산해서 출력하면 된다.

 

정답 코드
//백준 1439번: 수 찾기

//입력
const s = require('fs').readFileSync('/dev/stdin').toString().trim();

let count = 0;

for(let i=0; i<s.length-1; i++){  // -1을 하지 않으면 s[i+1] 마지막 인덱스에서 undefined
    if(s[i] != s[i+1]) count += 1;
}

console.log(Math.floor((count+1)/2))

 


 

 

1439번: 뒤집기

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

www.acmicpc.net

 

저작자표시 (새창열림)

'알고리즘 > 백준' 카테고리의 다른 글

[백준 알고리즘] 3273번: 두 수의 합 (Python / 파이썬)  (0) 2024.01.09
[백준 알고리즘] 14502번: 연구소 (Python / 파이썬)  (1) 2024.01.09
[백준 알고리즘] 1920번: 수 찾기 (JavaScript / JS / 자바스크립트)  (0) 2023.06.17
[백준 알고리즘] 11399번: ATM (JavaScript / JS / 자바스크립트)  (1) 2023.06.10
[백준 알고리즘] 1158번: 요세푸스 문제 (JavaScript / JS / 자바스크립트)  (0) 2023.06.02
'알고리즘/백준' 카테고리의 다른 글
  • [백준 알고리즘] 3273번: 두 수의 합 (Python / 파이썬)
  • [백준 알고리즘] 14502번: 연구소 (Python / 파이썬)
  • [백준 알고리즘] 1920번: 수 찾기 (JavaScript / JS / 자바스크립트)
  • [백준 알고리즘] 11399번: ATM (JavaScript / JS / 자바스크립트)
gyujh
gyujh
개발 공부 블로그
  • gyujh
    규
    gyujh
  • 전체
    오늘
    어제
    • 분류 전체보기 (86)
      • Backend&DB (3)
      • CS (5)
        • 컴퓨터구조 (1)
        • 소프트웨어공학 (4)
      • JavaScript (2)
      • Git (2)
      • 알고리즘 (73)
        • 개념 (3)
        • 백준 (70)
      • Projects (1)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

    스택
    알고리즘
    재귀
    답
    너비우선탐색
    에러
    BOJ
    풀이
    프로그래머스
    정렬
    문자열
    런타임
    시간초과
    답안
    구현
    algorithm
    숏코딩
    백준
    딕셔너리
    정답
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
gyujh
[백준 알고리즘] 1439번: 뒤집기 (JavaScript / JS / 자바스크립트)
상단으로

티스토리툴바