Algorithm/λ¬Έμ œν’€μ΄

[λ°±μ€€] 2508번 - 사탕 박사 고창영 (C++)

moaoh 2023. 7. 28. 23:18

 

2508번: 사탕 박사 고창영

μ°½μ˜μ΄κ°€ λ“œλ””μ–΄ 취직을 ν–ˆλ‹€!! κ·Έκ°€ 30μ„ΈκΉŒμ§€ 취직을 μ•ˆν•˜λ˜ μ΄μœ λŠ” λ°”λ‘œ λ§ˆμŒμ— λ‹€λ‹ˆλŠ” 직μž₯을 μ°Ύμ§€ λͺ»ν•΄μ„œμ˜€λ‹€. μ΄λ²ˆμ— μ°½μ˜μ΄κ°€ μ·¨μ§ν•œ 곳은 사탕 곡μž₯이닀. 사탕 곡μž₯에 λ‹€λ‹ˆλ©΄ 사탕 처럼

www.acmicpc.net

문제

μ°½μ˜μ΄κ°€ λ“œλ””μ–΄ 취직을 ν–ˆλ‹€!! κ·Έκ°€ 30μ„ΈκΉŒμ§€ 취직을 μ•ˆν•˜λ˜ μ΄μœ λŠ” λ°”λ‘œ λ§ˆμŒμ— λ‹€λ‹ˆλŠ” 직μž₯을 μ°Ύμ§€ λͺ»ν•΄μ„œμ˜€λ‹€. μ΄λ²ˆμ— μ°½μ˜μ΄κ°€ μ·¨μ§ν•œ 곳은 사탕 곡μž₯이닀. 사탕 곡μž₯에 λ‹€λ‹ˆλ©΄ 사탕 처럼 λ‹¬μ½€ν•œ 직μž₯μƒν™œμ„ ν•  쀄 μ•Œμ•˜μ§€λ§Œ, 8μ‹œκ°„λ™μ•ˆ 사탕 ν’ˆμ§ˆμ„ 검사해야 ν•˜λŠ” μž‘μ—…μ€ λ„ˆλ¬΄λ‚˜ μ§€λ£¨ν–ˆλ‹€.

μ‚¬νƒ•μ˜ ν’ˆμ§ˆμ€ λ‹€μŒκ³Ό 같이 κ²€μ‚¬ν•œλ‹€. κ°€μž₯ λ¨Όμ € μ‚¬νƒ•μœΌλ‘œ 가득 μ°¬ λ°•μŠ€λ₯Ό μ—°λ‹€. κ·Έ λ‹€μŒ μ‚¬νƒ•μ˜ κ°œμˆ˜μ™€ 사탕이 μ—†λŠ” 곳의 개수λ₯Ό μ„Όλ‹€.

지루함을 견디지 λͺ»ν•œ μ°½μ˜μ΄λŠ” κ²°κ΅­ ν’ˆμ§ˆμ„ κ²€μ‚¬ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜κΈ°λ‘œ ν–ˆλ‹€.

rν–‰ cμ—΄ 행렬이 μ£Όμ–΄μ§„λ‹€. 이 행렬은 λ°•μŠ€λ₯Ό μœ„μ—μ„œ 바라본 것이닀. ν–‰λ ¬μ—λŠ” λ‹€μŒκ³Ό 같은 문자만 μžˆλ‹€.

  • ".": 빈 κ³³
  • "o": μ‚¬νƒ•μ˜ 먹을 수 μžˆλŠ” λΆ€λΆ„
  • "<>v^": μΊ”λ”” 껍질

사탕은 였직 2κ°€μ§€ λͺ¨μŠ΅λ§Œ μžˆλ‹€.

  1. >o<
  2. v
    o
    ^

μœ„μ™€ 같은 μ—°μ†λœ 3개의 문자만 사탕이닀.

사탕은 >o.와 같이 μ‚¬νƒ•μ˜ μΌλΆ€λ§Œ μ‘΄μž¬ν•  수 μžˆμ§€λ§Œ, 이 것은 μ‚¬νƒ•μœΌλ‘œ μ„Έμ§€ μ•ŠλŠ”λ‹€.

rν–‰ cμ—΄ 행렬이 μ£Όμ–΄μ‘Œμ„ λ•Œ, μ‚¬νƒ•μ˜ 개수λ₯Ό 좜λ ₯ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€.


μž…λ ₯

첫째 쀄에 ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€μ˜ 개수 tκ°€ μ£Όμ–΄μ§„λ‹€. 각 ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€λŠ” 빈 μ€„λ‘œ κ΅¬λΆ„λœλ‹€.

각 ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€μ˜ 첫째 μ€„μ—λŠ” rκ³Ό c κ°€ μ£Όμ–΄μ§„λ‹€. (1 ≤ r,c ≤ 400) κ·Έ λ‹€μŒ r개의 μ€„μ—λŠ” ν–‰λ ¬μ˜ 각 행이 μˆœμ„œλŒ€λ‘œ μ£Όμ–΄μ§„λ‹€. ν–‰λ ¬μ˜ 각 행은 c개의 문자이며, ".o<>v^"만 ν¬ν•¨ν•˜κ³  μžˆλ‹€. (각각의 μ•„μŠ€ν‚€ 값은 46, 111, 60, 62, 118, 94이닀)


좜λ ₯

각각의 ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€μ— λŒ€ν•΄ ν•œ 쀄에 ν•˜λ‚˜μ˜ μ •μˆ˜λ§Œ 좜λ ₯ν•œλ‹€. 이 값은 λ°•μŠ€μ— λ“€μ–΄μžˆλŠ” μ‚¬νƒ•μ˜ κ°œμˆ˜μ΄λ‹€.



풀이과정

배열을 일일이 확인을 ν•΄κ°€λ©΄μ„œ 사탕ꡬ성에 νƒ€λ‹Ήν•œ 쑰건인지 ν™•μΈν•˜λ©° μ§„ν–‰ν•˜λŠ” λ°©μ‹μœΌλ‘œ 진행을 ν•˜λ©΄ λœλ‹€.

code

#include <iostream>

int		main(void)
{
	int		t, r, c, count;
	char	candys[401][401];

	std::cin >> t;
	for (int i = 0; i < t; i++) 
	{
		std::cin >> r >> c;
		for (int j = 0; j < r; j++)
			for (int k = 0; k < c; k++)
				std::cin >> candys[j][k];

		count = 0;
		// 였λ₯Έμͺ½ μ•„λž˜.
		for (int j = 0; j < r; j++) {
			for (int k = 0; k < c; k++) {
				if (k + 2 < c && candys[j][k] == '>' && candys[j][k + 1] == 'o' && candys[j][k + 2] == '<')
					count++;
				if (j + 2 < r && candys[j][k] == 'v' && candys[j + 1][k] == 'o' && candys[j + 2][k] == '^')
					count++;
			}
		}
		std::cout << count << "\n";
	}

	return (0);
}


ν›„κΈ°

μ˜ˆμ œμ—λŠ” 1개만 μžˆλŠ” μ˜ˆμ‹œλ°–μ— μ—†μ–΄μ„œ λͺ°λžλŠ”λ° μΊ”λ””μ˜ 개수λ₯Ό 좜λ ₯ν•œ 이후에 newline을 λ„£μ–΄μ€˜μ•Όν–ˆμ—ˆλ‹€.
κ·Έκ±° λ•Œλ¬Έμ— 쓸데없이 ν‹€λ¦Όλ§Œ λŠ˜μ–΄λ‚¬λ‹€.