문제 풀이 및 개발 공간

[백준] 20365번 블로그2 문제! (silver 3 본문

백준공부/java

[백준] 20365번 블로그2 문제! (silver 3

gomduri43 2022. 8. 25. 02:12

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

public class Main{

	public static void main(String[] args) throws IOException {
		BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(System.out));
		int n=Integer.parseInt(br.readLine());
		String a=br.readLine();
		int sumB=0;
		int sumR=0;
		char temp='a';
		for(int i=0; i<a.length(); i++) {
			if(a.charAt(i)=='B') {
				if(temp=='B') {
					continue;
				}
				else {
					sumB++;
					temp='B';
				}
			}
			else {
				if(temp=='R') {
					continue;
				}
				else {
					sumR++;
					temp='R';
				}
			}
		}
		if(sumB>=sumR) {
			bw.write(1+sumR+"");
		}
		else {
			bw.write(1+sumB+"");
		}
		bw.flush();
	}

}
//이코드가 아래에 비해서, 메모리나 시간이나 거의 절반이 소요되는 효율적인 코드이다.
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

public class Main{

	public static void main(String[] args) throws IOException {
		BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(System.out));
		int n=Integer.parseInt(br.readLine());
		String a=br.readLine();
		int sumB=0;
		int sumR=0;
		String[] strB=a.split("R");
		String[] strR=a.split("B");
		for(int i=0; i<strB.length; i++) {
			if(!strB[i].equals("")) {
				sumR++;
			}
		}
		for(int i=0; i<strR.length; i++) {
			if(!strR[i].equals("")) {
				sumB++;
			}
		}
		
		
		if(sumB>=sumR) {
			bw.write(1+sumR+"");
		}
		else {
			bw.write(1+sumB+"");
		}
		bw.flush();
	}

}
//이렇게 구현하면서, 메모리,시간효율 최악이지만, split에서 구분하는 문자가 연속할 경우 ""값을
//문자열로 받아들여 배열에 저장한다는 것을 깨달았다. 이럴경우 
//문자배열에서 .equals("")가 아닐때로 잡아준다. 만약 문자를 구분할때 r b에서 b로 구분할 경우
// " "또한 문자열로 저장되는데 이는 " " 이지 ""은 아니다. 띄어쓰기는 무조건 " ", 
//위처럼 있던 문자가 날라가면서 생기는 공백은 ""이다. 이둘의 차이점 기억하기!