DY N DY

실력키우기 문자열찾기(JAVA) 본문

PARK/ALGORITHM

실력키우기 문자열찾기(JAVA)

손세지 2016. 4. 28. 10:17

2514 : 문자열 찾기

제한시간: 1Sec    메모리제한: 32mb
해결횟수: 1118회    시도횟수: 1694회   



주어진 문자열에서 연속 3개의 문자가 IOI 이거나 KOI인 문자열이 각각 몇 개 있는지 찾는 프로그램을 작성하라.

문자열은 알파벳의 대문자로만 이루어진다. 예를 들어 "KOIOIOI"라는 문자열은 KOI 1개 , IOI 2개가 포함되어있다.

e3050b66a1b29a01767400d7560a4131_1449727
 

 

 

입력은 한 줄이며 10, 000자 이하의 알파벳 대문자로 구성된다.



출력은 2줄이며, 첫 번째 줄에는 KOI의 개수, 두 번째 줄에는 IOI의 개수를 각각 출력하라.


 [Copy]
KOIOIOI
 [Copy]
1
2



 [Copy]
KORKDIOIDXHKOIOIOIOPKOI
 [Copy]
2
3



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
/**************************************************************
    Problem: 2514
    User: a132034
    Language: Java
    Result: Success
    Time:164 ms
    Memory:9460 kb
****************************************************************/
 
 
import java.util.Scanner;
 
public class Main
{
    private static Scanner sc;
    public static int[] result;
    public static void main(String[] args) {
        sc = new Scanner(System.in);
        String str = sc.nextLine();
 
        char[] strArr = str.toCharArray();
        int count1 = 0;
        int count2 = 0;
         
        for(int i = 0 ; i < strArr.length - 2; ++i)
        {
            if(strArr[i] == 'K')
            {
                if(strArr[i+1] == 'O' && strArr[i+2] == 'I')
                    count1++;
            }
            else if(strArr[i] == 'I')
            {
                if(strArr[i+1] == 'O' && strArr[i+2] == 'I')
                    count2++;
            }
        }
         
        System.out.println(count1);
        System.out.println(count2);
         
    }
}



단순하게 0번째 배열에서 끝에서 2번째 배열까지(길이가 3인 문자열을 찾는 것이므로) for문을 돌며 

K 또는 I가 나올 경우 다음과 다다음의 문자를 확인하여 count1(KOI), count2(IOI)를 증가시켰다.

'PARK > ALGORITHM' 카테고리의 다른 글

실력키우기 큐(JAVA)  (0) 2016.04.29
실력키우기 숫자의 개수(JAVA)  (0) 2016.04.28
실력키우기 스택(JAVA)  (0) 2016.04.27
실력키우기 이진탐색(JAVA)  (0) 2016.04.26
실력키우기 약수(C++)  (0) 2016.04.20