μ•Œκ³ λ¦¬μ¦˜ 문제/BOJ_Java

[BOJ/Step7]2941 : ν¬λ‘œμ•„ν‹°μ•„ μ•ŒνŒŒλ²³ (JAVA)

NaNaRinπŸ™ƒ 2021. 1. 12. 22:07

www.acmicpc.net/problem/2941

 

2941번: ν¬λ‘œμ•„ν‹°μ•„ μ•ŒνŒŒλ²³

μ˜ˆμ „μ—λŠ” μš΄μ˜μ²΄μ œμ—μ„œ ν¬λ‘œμ•„ν‹°μ•„ μ•ŒνŒŒλ²³μ„ μž…λ ₯ν•  μˆ˜κ°€ μ—†μ—ˆλ‹€. λ”°λΌμ„œ, λ‹€μŒκ³Ό 같이 ν¬λ‘œμ•„ν‹°μ•„ μ•ŒνŒŒλ²³μ„ λ³€κ²½ν•΄μ„œ μž…λ ₯ν–ˆλ‹€. ν¬λ‘œμ•„ν‹°μ•„ μ•ŒνŒŒλ²³ λ³€κ²½ č c= Δ‡ c- dΕΎ dz= Δ‘ d- lj lj nj nj š s= ΕΎ z=

www.acmicpc.net


문제

μ˜ˆμ „μ—λŠ” μš΄μ˜μ²΄μ œμ—μ„œ ν¬λ‘œμ•„ν‹°μ•„ μ•ŒνŒŒλ²³μ„ μž…λ ₯ν•  μˆ˜κ°€ μ—†μ—ˆλ‹€. λ”°λΌμ„œ, λ‹€μŒκ³Ό 같이 ν¬λ‘œμ•„ν‹°μ•„ μ•ŒνŒŒλ²³μ„ λ³€κ²½ν•΄μ„œ μž…λ ₯ν–ˆλ‹€.

ν¬λ‘œμ•„ν‹°μ•„ μ•ŒνŒŒλ²³λ³€κ²½
č c=
Δ‡ c-
dΕΎ dz=
Δ‘ d-
lj lj
nj nj
š s=
ΕΎ z=

예λ₯Ό λ“€μ–΄, ljes=njak은 ν¬λ‘œμ•„ν‹°μ•„ μ•ŒνŒŒλ²³ 6개(lj, e, š, nj, a, k)둜 이루어져 μžˆλ‹€. 단어가 μ£Όμ–΄μ‘Œμ„ λ•Œ, λͺ‡ 개의 ν¬λ‘œμ•„ν‹°μ•„ μ•ŒνŒŒλ²³μœΌλ‘œ 이루어져 μžˆλŠ”μ§€ 좜λ ₯ν•œλ‹€.

dΕΎλŠ” 무쑰건 ν•˜λ‚˜μ˜ μ•ŒνŒŒλ²³μœΌλ‘œ 쓰이고, d와 ΕΎκ°€ λΆ„λ¦¬λœ κ²ƒμœΌλ‘œ 보지 μ•ŠλŠ”λ‹€. lj와 nj도 λ§ˆμ°¬κ°€μ§€μ΄λ‹€. μœ„ λͺ©λ‘μ— μ—†λŠ” μ•ŒνŒŒλ²³μ€ ν•œ κΈ€μžμ”© μ„Όλ‹€.

 

μž…λ ₯

첫째 쀄에 μ΅œλŒ€ 100κΈ€μžμ˜ 단어가 주어진닀. μ•ŒνŒŒλ²³ μ†Œλ¬Έμžμ™€ '-', '='둜만 이루어져 μžˆλ‹€.

λ‹¨μ–΄λŠ” ν¬λ‘œμ•„ν‹°μ•„ μ•ŒνŒŒλ²³μœΌλ‘œ 이루어져 μžˆλ‹€. 문제 μ„€λͺ…μ˜ ν‘œμ— λ‚˜μ™€μžˆλŠ” μ•ŒνŒŒλ²³μ€ λ³€κ²½λœ ν˜•νƒœλ‘œ μž…λ ₯λœλ‹€.

 

좜λ ₯

μž…λ ₯으둜 주어진 단어가 λͺ‡ 개의 ν¬λ‘œμ•„ν‹°μ•„ μ•ŒνŒŒλ²³μœΌλ‘œ 이루어져 μžˆλŠ”μ§€ 좜λ ₯ν•œλ‹€.

 

예제 μž…λ ₯ 1

ljes=njak

 

예제 좜λ ₯ 1

6

 

예제 μž…λ ₯ 2

ddz=z=

 

예제 좜λ ₯ 2

3

 

예제 μž…λ ₯ 3

nljj

 

예제 좜λ ₯ 3

3

 

예제 μž…λ ₯ 4

c=c=

 

예제 좜λ ₯ 4

2


풀이

1. ν¬λ‘œμ•„ν‹°μ•„ μ•ŒνŒŒλ²³μ„ 배열에 μ €μž₯

    (μ΄λ•Œ dz= λ₯Ό z=보닀 λ¨Όμ € μ €μž₯ν•˜μ§€ μ•ŠμœΌλ©΄ dz=κ°€ μ•„λ‹Œ d와 z= λ‘κ°œμ˜ μ•ŒνŒŒλ²³μœΌλ‘œ 카운트 될 수 μžˆλ‹€) 

2. μž…λ ₯받은 s에 ν¬λ‘œμ•„ν‹°μ•„ μ•ŒνŒŒλ²³μ΄ ν¬ν•¨λ˜μ–΄ μžˆλŠ”μ§€ 배열을 μ΄μš©ν•˜μ—¬ 검사

    => contains()λ©”μ†Œλ“œ μ‚¬μš©

3. ν¬λ‘œμ•„ν‹°μ•„ μ•ŒνŒŒλ²³μ΄ μ‘΄μž¬ν•˜λ©΄ ν•΄λ‹Ή μ•ŒνŒŒλ²³μ„ " " 곡백으둜 λŒ€μ²΄ν•˜κ³  μΉ΄μš΄νŠΈν•œλ‹€.

    (곡백으둜 μΉ˜ν™˜ν•˜λŠ” 이유 : μ•„μ˜ˆ λ¬Έμžμ—΄μ„ μ‚­μ œν•˜λ©΄ μ‚­μ œλœ μ•ŒνŒŒλ²³ μ–‘ μ˜†μ˜ 두 μ•ŒνŒŒλ²³μ΄ ν•©μ³μ Έμ„œ μƒˆ ν¬λ‘œμ•„ν‹°μ•„ μ•ŒνŒŒλ²³μ΄ 될 수 있기 λ•Œλ¬Έ)

    => replaceFirst() λ©”μ†Œλ“œ μ‚¬μš©

4. 곡백을 μ‚­μ œ

5. 남은 μ•ŒνŒŒλ²³μ˜ 길이λ₯Ό 카운트된 ν¬λ‘œμ•„ν‹°μ•„ μ•ŒνŒŒλ²³ μˆ˜μ— λ”ν•œλ‹€ (남은 μ•ŒνŒŒλ²³μ€ ν•œ κΈ€μžμ— ν•˜λ‚˜μ”©)

6. 총 개수 좜λ ₯

 

import java.util.Scanner;

public class B2941 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		String s = sc.nextLine();
		int count = 0;
		String[] c = {"dz=", "c=", "c-", "d-", "lj", "nj", "s=", "z="}; 
		
		for(int i = 0; i < c.length; i++) { 
			while(s.contains(c[i])) { 
				s = s.replaceFirst(c[i], " "); 
				count++;
			}
		}
		s = s.replace(" ", "");
		count += s.length();

		System.out.println(count);
		
	}

}