# [Algorithm/JS] ๋ฐฑ์ค€ 1439๋ฒˆ ๋’ค์ง‘๊ธฐ

๐Ÿ”— ๋ฌธ์ œ ๋ฐ”๋กœ๊ฐ€๊ธฐ (opens new window)

# Question

๋‹ค์†œ์ด๋Š” 0๊ณผ 1๋กœ๋งŒ ์ด๋ฃจ์–ด์ง„ ๋ฌธ์ž์—ด S๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ๋‹ค์†œ์ด๋Š” ์ด ๋ฌธ์ž์—ด S์— ์žˆ๋Š” ๋ชจ๋“  ์ˆซ์ž๋ฅผ ์ „๋ถ€ ๊ฐ™๊ฒŒ ๋งŒ๋“ค๋ ค๊ณ  ํ•œ๋‹ค. ๋‹ค์†œ์ด๊ฐ€ ํ•  ์ˆ˜ ์žˆ๋Š” ํ–‰๋™์€ S์—์„œ ์—ฐ์†๋œ ํ•˜๋‚˜ ์ด์ƒ์˜ ์ˆซ์ž๋ฅผ ์žก๊ณ  ๋ชจ๋‘ ๋’ค์ง‘๋Š” ๊ฒƒ์ด๋‹ค. ๋’ค์ง‘๋Š” ๊ฒƒ์€ 1์„ 0์œผ๋กœ, 0์„ 1๋กœ ๋ฐ”๊พธ๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด S=0001100 ์ผ ๋•Œ,

์ „์ฒด๋ฅผ ๋’ค์ง‘์œผ๋ฉด 1110011์ด ๋œ๋‹ค. 4๋ฒˆ์งธ ๋ฌธ์ž๋ถ€ํ„ฐ 5๋ฒˆ์งธ ๋ฌธ์ž๊นŒ์ง€ ๋’ค์ง‘์œผ๋ฉด 1111111์ด ๋˜์–ด์„œ 2๋ฒˆ ๋งŒ์— ๋ชจ๋‘ ๊ฐ™์€ ์ˆซ์ž๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ, ์ฒ˜์Œ๋ถ€ํ„ฐ 4๋ฒˆ์งธ ๋ฌธ์ž๋ถ€ํ„ฐ 5๋ฒˆ์งธ ๋ฌธ์ž๊นŒ์ง€ ๋ฌธ์ž๋ฅผ ๋’ค์ง‘์œผ๋ฉด ํ•œ ๋ฒˆ์— 0000000์ด ๋˜์–ด์„œ 1๋ฒˆ ๋งŒ์— ๋ชจ๋‘ ๊ฐ™์€ ์ˆซ์ž๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

๋ฌธ์ž์—ด S๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ๋‹ค์†œ์ด๊ฐ€ ํ•ด์•ผํ•˜๋Š” ํ–‰๋™์˜ ์ตœ์†Œ ํšŸ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•˜์‹œ์˜ค.

# Input

์ฒซ์งธ ์ค„์— ๋ฌธ์ž์—ด S๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. S์˜ ๊ธธ์ด๋Š” 100๋งŒ๋ณด๋‹ค ์ž‘๋‹ค.

# Output

์ฒซ์งธ ์ค„์— ๋‹ค์†œ์ด๊ฐ€ ํ•ด์•ผํ•˜๋Š” ํ–‰๋™์˜ ์ตœ์†Œ ํšŸ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

# Example

# Input 1

0001100
1

# Output 1

1
1

# Input 2

11111
1

# Output 2

0
1

# Input 3

0000001
1

# Output 3

1
1

๋” ๋งŽ์€ ์˜ˆ์ œ๋Š” ์ƒ๋‹จ url ์ฐธ๊ณ 

# Solution

์•Œ๊ณ ๋ฆฌ์ฆ˜: Greedy ํƒ์š•๋ฒ•

# ๊ณ„ํš ์„ธ์šฐ๊ธฐ

์ž…๋ ฅ๊ฐ’์˜ ์—ฐ์†๋œ 0์˜ ๊ทธ๋ฃน๊ณผ 1์ด ๊ทธ๋ฃน์„ ๊ณ„์‚ฐํ•ด ๋‘ ๊ทธ๋ฃน์˜ ์ˆ˜๊ฐ€ ๋” ๋งŽ์€ ๊ทธ๋ฃน์˜ ์ˆ˜๋ฅผ ์ถœ๋ ฅ

ex) ์ž…๋ ฅ๊ฐ’์ด 11001100110011000001 ์ผ ๋•Œ ์•„๋ž˜์™€ ๊ฐ™์ด ๊ทธ๋ฃน์ง€์„ ์ˆ˜ ์žˆ๋‹ค. 11 00 11 00 11 00 11 0000 1 1๋กœ ๊ตฌ์„ฑ๋œ ๊ทธ๋ฃน์ด 5๊ฐœ, 0์œผ๋กœ ๊ตฌ์„ฑ๋œ 4๊ทธ๋ฃน

  1. ์ž…๋ ฅ๊ฐ’(input)์„ ํ•œ ๊ธ€์ž์”ฉ ์ชผ๊ฐœ ๋ฐฐ์—ด๋กœ ๋ฐ›์•„์˜จ๋‹ค.
  2. ๋ฐ˜๋ณต๋ฌธ์„ ์‚ฌ์šฉํ•  ๊ฒƒ โ†’ ๋ฐ˜๋ณต๋ฌธ ์‹œ์ž‘์€ 1๋ถ€ํ„ฐ : input ๋ฐฐ์—ด์˜ ์ฒซ๋ฒˆ ๋‘๋ฒˆ์งธ ์š”์†Œ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๊ธฐ ์œ„ํ•จ
  3. ์ด์ „ ์ธ๋ฑ์Šค ๊ฐ’๊ณผ ํ˜„์žฌ ์ธ๋ฑ์Šค ๊ฐ’์„ ๋น„๊ตํ•œ๋‹ค. ์ด์ „ ์ธ๋ฑ์Šค์˜ ๊ฐ’์„ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ pre ๋ณ€์ˆ˜ ์„ ์–ธ โ†’ ์ดˆ๊ธฐ ๊ฐ’์€ input ๋ฐฐ์—ด์˜ ์ฒซ๋ฒˆ์งธ ์š”์†Œ
  4. ๋‘ ๊ฐ’์ด ๋‹ค๋ฅด๋‹ค๋ฉด ๊ทธ๋ฃน์œผ๋กœ ๋ถ„๋ฆฌ๋˜๋Š” ์ง€์ ์ด๋ฏ€๋กœ pre ๋ณ€์ˆ˜๋ฅผ ํ˜„์žฌ ๊ฐ’์œผ๋กœ ๊ต์ฒดํ•ด์ค€๋‹ค.
  5. ๋ถ„๋ฆฌ ์ง€์ ์—์„œ ํ˜„์žฌ ๊ฐ’์ด 0 ์ด๋ผ๋ฉด zero ๋ณ€์ˆ˜ ์นด์šดํŠธ, 1์ด๋ผ๋ฉด one ๋ณ€์ˆ˜ ์นด์šดํŠธ
  6. ๋‘ ์นด์šดํŠธ ๋ณ€์ˆ˜์ค‘ ์ž‘์€ ๋ณ€์ˆ˜ ์ถœ๋ ฅ

# ๋‚˜์˜ ํ’€์ด

const fs = require('fs');
const filePath = process.platform === 'linux' ? 'dev/stdin' : '../input.txt';
const input = fs.readFileSync(filePath).toString().trim().split('');

let pre = input[0];
let one = 0;
let zero = 0;

for (let i = 1; i < input.length; i++) {
  let cur = input[i];
  if (pre !== cur) {
    pre = cur;
    if (cur === '1') one++;
    else zero++;
  }
}
console.log(Math.min(one, zero));
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

# ๊ณ„ํš๊ณผ ํ’€์ด ๋น„๊ต

์ฒซ ๊ทธ๋ฃน์˜ ์ˆ˜๊ฐ€ ์นด์šดํŠธ ๋˜์ง€ ์•Š์•„ ์‹ค์ œ ๊ทธ๋ฃน ์ˆ˜๋ณด๋‹ค 1์ด ์ž‘๊ฒŒ ์ถœ๋ ฅ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ–ˆ๋‹ค.

์‚ฌ์‹ค ์ž…๋ ฅ๊ฐ’์ด 0๊ณผ 1์ด ๋Œ์•„๊ฐ€๋ฉด์„œ ๋‚˜์˜ค๋Š” ์ˆ˜์ด๊ธฐ ๋•Œ๋ฌธ์— ๋‹ต์— ์˜ํ–ฅ์ด ์žˆ์ง„ ์•Š์ง€๋งŒ ์ •ํ™•ํ•œ ํ’€์ด๊ฐ€ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ์•„๋ž˜ ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ–ˆ๋‹ค.

๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•œ ๋‹ค์Œ ๋ฐ˜๋ณต๋ฌธ ์‹คํ–‰ ์ „ pre ๋ณ€์ˆ˜์˜ ์ดˆ๊ธฐ ๊ฐ’์ด 0์ด๋ผ๋ฉด zero๋ฅผ ์นด์šดํŠธ ํ•˜๊ณ , 1์ด๋ผ๋ฉด one ๋ณ€์ˆ˜๋ฅผ ์นด์šดํŠธํ•œ๋‹ค.

if (pre === '0') zero++;
else one++;
1
2

# ์ตœ์ข… ํ’€์ด

const fs = require('fs');
const filePath = process.platform === 'linux' ? 'dev/stdin' : '../input.txt';
const input = fs.readFileSync(filePath).toString().trim().split('');

let pre = input[0];
let one = 0;
let zero = 0;

if (pre === '0') zero++;
else zero++;

for (let i = 1; i < input.length; i++) {
  let cur = input[i];
  if (pre !== cur) {
    pre = cur;
    if (cur === '1') one++;
    else zero++;
  }
}
console.log(Math.min(one, zero));
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Last Updated: 2022. 6. 5. ์˜คํ›„ 3:42:39