공부하기/백준

[Java] 백준 풀기 15904 - UCPC는 무엇의 약자일까?

XEV 2023. 7. 21. 23:11

자바 백준 15904번

실버 5

https://www.acmicpc.net/problem/15904

 

15904번: UCPC는 무엇의 약자일까?

첫 번째 줄에 알파벳 대소문자, 공백으로 구성된 문자열이 주어진다. 문자열의 길이는 최대 1,000자이다. 문자열의 맨 앞과 맨 끝에 공백이 있는 경우는 없고, 공백이 연속해서 2번 이상 주어지는

www.acmicpc.net

 

 

 

 

 

문제 보기

분류: 문자열, 그리디 알고리즘

 

 

 

 

 

문제 풀기

입력된 문자열에 대해 indexOf()를 사용하여 char 타입으로 대문자 `U`, `C`, `P`, `C`의 index를 찾는다.

각 indexOf()는 존재하는 문자를 찾으면 그 문자의 `index`를 반환하고 그렇지 않으면 `-1`을 반환한다.

첫 번째 문자의 탐색이 끝나면 그 index값을 다음 두 번째 문자 탐색의 시작 index로 넘겨주는 식으로 하여 탐색 시작 위치를 지정한다. 이 방법은 다음 문자들에도 적용한다.

`-1`이 출력되지 않았으면 네 문자는 모두 순차적으로 UCPC를 만들 수 있으므로 `true`를 리턴하고, `-1`이 하나라도 나오면 없는 문자이기에 `false`를 리턴한다.

 

 

 

 

 

코드 보기

import java.util.Scanner;

public class Main {
    
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        String input = sc.nextLine();

        if (canFormUCPC(input)) {
            System.out.print("I love UCPC");
        } else {
            System.out.print("I hate UCPC");
        }
    }

    private static boolean canFormUCPC(String input) {
        int index1stU = input.indexOf('U');
        int index2ndC = input.indexOf('C', index1stU + 1);
        int index3rdP = input.indexOf('P', index2ndC + 1);
        int index4thC = input.indexOf('C', index3rdP + 1);

        if (index1stU != -1 && index2ndC != -1 && index3rdP != -1 && index4thC != -1) {
            return true;
        } else {
            return false;
        }
    }
    
}

 

 

 

 

 

참고 하기

https://www.w3schools.com/java/ref_string_indexof.asp

 

Java String indexOf() Method

W3Schools offers free online tutorials, references and exercises in all the major languages of the web. Covering popular subjects like HTML, CSS, JavaScript, Python, SQL, Java, and many, many more.

www.w3schools.com