Post

greedy (advanced)

๐Ÿ™‹โ€โ™‚๏ธ๋“ค์–ด๊ฐ€๋ฉฐ

์ด๋ฒˆ์— ํ•™์Šตํ•  ๋‚ด์šฉ์€ ๊ทธ๋ฆฌ๋”” ์‘์šฉ๋ฒ„์ ผ์ด๋‹ค


์˜ˆ์ œ

boj_์ง€๋ขฐ์ฐพ๊ธฐ_9082




ํ’€์ด

โ†™๏ธ โฌ‡๏ธ โ†˜๏ธ ์ด ๋ฐฉํ–ฅ์„ ์ƒ๊ฐํ•ด๋ณด์ž ๋จผ์ € ํ•ด๋‹น๋ฌธ์ œ๋Š” ๊ทธ๋ฆฌ๋””๋กœ ํ’€ ์ˆ˜ ์žˆ๊ฒ ๋‹ค

2๊ฐ€์ง€ ๊ฒฝ์šฐ๋กœ ๋‚˜๋ˆ ๋ณด์ž

1
2
3
4
1. ์ง€๋ขฐ(*)์ผ๋•Œ ํšŸ์ˆ˜ ํ•ฉ์‚ฐ

2-1. ์ง€๋ขฐ๊ฐ€ ์•„๋‹๋–„ (#) ์ง€๋ขฐ๋ฅผ ๋†“์„ ์ˆ˜ ์žˆ๋Š”์ง€ ๊ฒ€์‚ฌ
2-2. ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ

*์ผ๋•Œ๋Š” ๋ฌด์กฐ๊ฑด cnt++ #๋ผ๋ฉด ์•ž์—์„œ ๋ถ€ํ„ฐ ๋ฒ”์œ„์— ๋งž๋‹ค๋ฉด 3๊ฐ€์ง€ ๋ฐฉํ–ฅ์„ ํƒ์ƒ‰ํ•  ์ˆ˜ ์žˆ๋„๋กํ•˜๊ณ  ์ˆซ์ž๋ฅผ ์ค„์—ฌ๋‚˜๊ฐ€๋ฉฐ 0์ด ๋ ์‹œ ํ•ด๋‹น ๋ฐ˜๋ณต๋ฌธ์€ breakํ•œ๋‹ค.




testcase_1, testcase_2๋ฅผ ํ’€์–ด๋ณด์ž

๋นˆ์นธ์€ ์ž„์˜๋กœ -๋ผ ์ง€์ •ํ•˜๊ฒ ๋‹ค

๋นจ๊ฐ„์ƒ‰์œผ๋กœ ํ‘œ์‹œํ•œ idx์—์„œ ์ธ๊ทผ 1์นธ์”ฉ ์ค„์ผ ์ˆ˜ ์žˆ์„ ๋•Œ ์ฐจ๊ฐํ•œ๋‹ค



๐Ÿ™‚testcase_1 โ€“> 11122


00122

1
*

00122

1
*-

00122

1
*--

00011

1
*--*

00011

1
*--**



๐Ÿ™‚testcase_2 โ€“> 23321


02321

1
*

01221

1
**

00111

1
***

00000

1
****

00000

1
****-



์ฝ”๋“œ

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
/*
๊ทธ๋ฆฌ๋”” 
*/

import java.io.IOException;
import java.io.InputStreamReader;
import java.io.BufferedReader;


public class Main {
	static char[] block;
	static int[] numbers;
	static int N;
	
	
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int T = Integer.parseInt(br.readLine());
		
		for (int tc = 1; tc < T+1; tc++) {
			N = Integer.parseInt(br.readLine());
			String num_arr = br.readLine();
			block = br.readLine().toCharArray();
			numbers = new int[N];
			for (int i = 0; i < N; i++) {
				numbers[i] = num_arr.charAt(i) - '0';
			}
			
			
			lets_find_maximum_bomb();			
		}
		
		
		
	}
	
	
	
	
	
	static void lets_find_maximum_bomb() {
		int cnt = 0;
		for (int i = 0; i < N; i++) {
			// 1. ์ง€๋ขฐ์ผ ๋•Œ ๋†“์„ ์ˆ˜ ์žˆ๋Š”์ง€ ๊ฒ€์‚ฌ
			if (block[i] == '*') {
				for (int j = i-1; j <= i+1; j++) {
					if (j >= 0 && j < N) {
						numbers[j]--;
					}
				}
				cnt++;
			}
			// 2-1. ์ง€๋ขฐ๊ฐ€ ์•„๋‹ ๋•Œ ๋†“์„ ์ˆ˜ ์žˆ๋Š”์ง€ ๊ฒ€์‚ฌ
			else if (block[i] == '#') {
				boolean flag = true;
				for (int j = i-1; j <= i+1; j++) {
					if (j >= 0 && j < N && numbers[j] <= 0) {
						flag = false;
						break;
					}
				}
				// 2-2. ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ
				if (flag) {
					for (int j = i-1; j <= i+1; j++) {
						if (j >= 0 && j < N) {
							numbers[j]--;
						}
					}
					block[i] = '*';
					cnt++;
				}
			}
		}
		// 3. ์ถœ๋ ฅ
		System.out.println(cnt);	
	}
	
	
	
	
	
}
This post is licensed under CC BY 4.0 by the author.
3D GIF

Trending Tags

๋„์›€์ด ํ•„์š”ํ•˜๋ฉด
๋‚˜๋ฅผ ๋ˆŒ๋Ÿฌ ๊ตฌ๋ฆฌ๐Ÿป
์ฑ—๋ด‡
๋„ˆ๊ตด
bot
์–ด์„œ์™€ ๊ตฌ๋ฆฌ ส• ยทแดฅยทส”
๋ฌด์—‡์ด ํ•„์š”ํ•˜์…” ๊ตฌ๋ฆฌ?

Trending Tags

๋„์›€์ด ํ•„์š”ํ•˜๋ฉด
๋‚˜๋ฅผ ๋ˆŒ๋Ÿฌ ๊ตฌ๋ฆฌ๐Ÿป
์ฑ—๋ด‡
๋„ˆ๊ตด
bot
์–ด์„œ์™€ ๊ตฌ๋ฆฌ ส• ยทแดฅยทส”
๋ฌด์—‡์ด ํ•„์š”ํ•˜์…” ๊ตฌ๋ฆฌ?