백준 - 3개만! ( 17288번, JAVA )

changi123·2025년 3월 7일
post-thumbnail

String ( https://www.acmicpc.net/problem/17288 )

풀이

  • 먼저 비교를 위해 첫 번째 문자를 StringBuilder에 넣었다.
  • 다음꺼부터 오름차순이 되어야함으로 앞값 == 뒤값-1 을 비교 // 만약 StringBuilder가 비어있다고 해도 비교할 첫 번째값을 넣어줘야함
  • 이후 만약 오름차순 3개가 완성이된다면 cnt++ // StringBuilder를 비우고 다시 비교할 뒤에 값을 append()
  • 만약 위에 반복문이 끝났는데 sb가 비어있지 않고 길이가 3이라면 cnt에 최종적으로 추가 // 아니라면 그대로 cnt 출력

오답이었던 이유

  • 여기서 조건을 sb.length() > 0 으로 줘서 ..
if( sb.length() == 3  ) {
			System.out.println(cnt+1);
		} else {
			System.out.println(cnt);
		}

package problem_solving.string;

import java.util.Scanner;

public class BaekJoon_17288 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String s = sc.next();

		int cnt = 0 ;
		StringBuilder sb = new StringBuilder();
		sb.append(s.charAt(0));
		for(int i = 1 ; i< s.length();i++) {
			if( s.charAt(i-1) ==  s.charAt(i)-1 || sb.length()==0) {
				sb.append(s.charAt(i));
			} else {
				if( sb.length() == 3 ) {
					cnt++;
					sb = new StringBuilder();
					sb.append(s.charAt(i));
				}  else if( sb.length() > 3 ) {
					sb = new StringBuilder();
					sb.append(s.charAt(i));
				}
			}
		}
		if( sb.length() == 3  ) {
			System.out.println(cnt+1);
		} else {
			System.out.println(cnt);
		}
	}

}


profile
개발자 홍찬기 꾸준한 사람이 되자

0개의 댓글