Skip to content

Commit 5fc3a9e

Browse files
committed
[Silver V] Title: 뒤집기, Time: 92 ms, Memory: 9456 KB -BaekjoonHub
1 parent 549f683 commit 5fc3a9e

2 files changed

Lines changed: 65 additions & 0 deletions

File tree

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
# [Silver V] 뒤집기 - 1439
2+
3+
[문제 링크](https://www.acmicpc.net/problem/1439)
4+
5+
### 성능 요약
6+
7+
메모리: 9456 KB, 시간: 92 ms
8+
9+
### 분류
10+
11+
그리디 알고리즘, 문자열
12+
13+
### 제출 일자
14+
15+
2026년 3월 9일 21:34:58
16+
17+
### 문제 설명
18+
19+
<p>다솜이는 0과 1로만 이루어진 문자열 S를 가지고 있다. 다솜이는 이 문자열 S에 있는 모든 숫자를 전부 같게 만들려고 한다. 다솜이가 할 수 있는 행동은 S에서 연속된 하나 이상의 숫자를 잡고 모두 뒤집는 것이다. 뒤집는 것은 1을 0으로, 0을 1로 바꾸는 것을 의미한다.</p>
20+
21+
<p>예를 들어 S=0001100 일 때,</p>
22+
23+
<ol>
24+
<li>전체를 뒤집으면 1110011이 된다.</li>
25+
<li>4번째 문자부터 5번째 문자까지 뒤집으면 1111111이 되어서 2번 만에 모두 같은 숫자로 만들 수 있다.</li>
26+
</ol>
27+
28+
<p>하지만, 처음부터 4번째 문자부터 5번째 문자까지 문자를 뒤집으면 한 번에 0000000이 되어서 1번 만에 모두 같은 숫자로 만들 수 있다.</p>
29+
30+
<p>문자열 S가 주어졌을 때, 다솜이가 해야하는 행동의 최소 횟수를 출력하시오.</p>
31+
32+
### 입력
33+
34+
<p>첫째 줄에 문자열 S가 주어진다. S의 길이는 100만보다 작다.</p>
35+
36+
### 출력
37+
38+
<p>첫째 줄에 다솜이가 해야하는 행동의 최소 횟수를 출력한다.</p>
39+
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
// /dev/stdin
2+
const fs = require("fs");
3+
let input = fs
4+
.readFileSync("/dev/stdin")
5+
.toString()
6+
.split("\n")
7+
.map((x) => x.replace("\r", ""));
8+
9+
const S = input[0];
10+
let cur = S[0];
11+
12+
let cnt0 = cur === "0" ? 1 : 0;
13+
let cnt1 = cur === "1" ? 1 : 0;
14+
15+
for (const v of S) {
16+
if (cur !== v) {
17+
cur = v;
18+
if (v === "0") {
19+
cnt0++;
20+
} else {
21+
cnt1++;
22+
}
23+
}
24+
}
25+
26+
console.log(Math.min(cnt0, cnt1));

0 commit comments

Comments
 (0)