Post

๐Ÿงฉ Baekjoon 1439 - ๋’ค์ง‘๊ธฐ

๐Ÿงฉ Baekjoon 1439 - ๋’ค์ง‘๊ธฐ

๋ฌธ์ œ

๋‹ค์†œ์ด๋Š” 0๊ณผ 1๋กœ๋งŒ ์ด๋ฃจ์–ด์ง„ ๋ฌธ์ž์—ด S๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ๋‹ค์†œ์ด๋Š” ์ด ๋ฌธ์ž์—ด S์— ์žˆ๋Š” ๋ชจ๋“  ์ˆซ์ž๋ฅผ ์ „๋ถ€ ๊ฐ™๊ฒŒ ๋งŒ๋“ค๋ ค๊ณ  ํ•œ๋‹ค.

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

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

์ž…๋ ฅ

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

์ถœ๋ ฅ

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

์˜ˆ์ œ

โœ… ์ž…๋ ฅ 1

1
11001100110011000001

โœ… ์ถœ๋ ฅ 1

1
4

โœ… ์ž…๋ ฅ 2

1
11101101

โœ… ์ถœ๋ ฅ 2

1
2

์ž‘์„ฑ ์ฝ”๋“œ

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Main {
	public static void main(String[] args) throws IOException {
		// ์ž…๋ ฅ ์ฒ˜๋ฆฌ
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		// ์ •๊ทœํ‘œํ˜„์‹
		Pattern pattern = Pattern.compile("0+|1+");
		Matcher matcher = pattern.matcher(br.readLine());
		
		// ํ•„ํ„ฐ๋ง๋œ ๊ฐ’๋“ค ๋ฆฌ์ŠคํŠธ์— ์ถ”๊ฐ€
		List<String> blocks = new ArrayList<>();
		while (matcher.find()) {
			blocks.add(matcher.group());
		}
		
		// 0 ๋ธ”๋ก๊ณผ 1 ๋ธ”๋ก ๊ฐ๊ฐ ๊ฐœ์ˆ˜ ์นด์šดํŠธ
		long zeroBlockCount = blocks.stream().filter(block -> block.startsWith("0")).count();
		long oneBlockCount = blocks.stream().filter(block -> block.startsWith("1")).count();
		
		// ์ถœ๋ ฅ ์ฒ˜๋ฆฌ
		System.out.println(Math.min(zeroBlockCount, oneBlockCount));
	}
}
  • ์ฒ˜์Œ์—๋Š” for๋ฌธ์„ ์ด์šฉํ•ด ๋ฌธ์ž์—ด์„ ์ˆœํšŒํ•˜๋ ค๊ณ  ํ–ˆ์ง€๋งŒ ์ฝ”๋“œ๊ฐ€ ์ง๊ด€์ ์ด์ง€ ์•Š๊ณ  ๋ณต์žกํ•ด์งˆ ๊ฒƒ ๊ฐ™์•„์„œ ์ •๊ทœํ‘œํ˜„์‹์„ ์ ์šฉํ•ด๋ณด์•˜๋‹ค.

ํšŒ๊ณ 

  • ๊ฐœ๋ฐœ์„ ํ•  ๋•Œ ๋Œ€๋ถ€๋ถ„ for๋ฌธ๊ณผ if๋ฌธ์œผ๋กœ ๊ตฌํ˜„์ด ๋˜์ง€๋งŒ ์ ์ ˆํ•œ ๋ฐฉ๋ฒ•์ธ์ง€ ์ข…์ข… ์˜๋ฌธ์ด ๋“ค ๋•Œ๊ฐ€ ์žˆ๋‹ค.
  • ํ‰์†Œ ํ•ด์˜ค๋˜ ๋ฐฉ์‹์— ๊ฐ‡ํžˆ์ง€ ๋ง๊ณ  ์˜ค๋Š˜์ฒ˜๋Ÿผ ์ƒˆ๋กœ์šด ๋ฐฉ์‹๋„ ์ฐพ์•„๋ด์•ผ๊ฒ ๋‹ค.
This post is licensed under CC BY 4.0 by the author.