[java] 백준 5586번 JOI와 IOI알고리즘/백준2021. 8. 2. 12:59
Table of Contents
예제 입력 2 같은 경우 겹쳐서 보면 JOI가 1번 IOI가 3번 나온 것을 알 수 있다.
예제 입력3 도 마찬가지로 JOI가 2번 IOI가 3번 나온 것을 알 수 있다.
내가 생각한 방법은 이렇다.
String으로 문자열을 입력받고 charAt()으로 JOI와 IOI가 있는지 확인해 count를 세는 것이다.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String s = sc.next();
int count1=0, count2=0;
// 배열크기를 벗어나기 때문에 -2를 해줌
// 현재의 문자와 그 다음 첫번째 문자 두번째 문자를 비교하기 떄문에 -2를 해줌.
for(int i=0; i<s.length()-2; i++){
// 소스가 중복이 되기때문에 변수 b를 선언하여 중복코드를 방지
boolean b = s.charAt(i + 1) == 'O' && s.charAt(i + 2) == 'I';
if(s.charAt(i) == 'J'){
if(b)
count1++;
}
if(s.charAt(i) == 'I'){
if(b)
count2++;
}
}
System.out.println(count1);
System.out.println(count2);
}
}
주석을 달아 놨다시피 s.length() - 2를 해준 이유는 JOI와 IOI가 있는지 없는지를 표현해주기 위해서는
i<s.length(), s.length=6이라고 생각을 해보면 반복문을 돌아 i가 5가 되었을 때
i+1 = 6, i+2 = 7이 되어 StringIndexOutOfBoundsException이 나게 된다. 배열의 크기는 6인데 배열의 크기를 넘어서..
오류 발생, 그래서 -2를 해줘야 오류가 나지 않는다.
J | O | I | J | O | I |
0 | 1 | 2 | 3 | 4 | 5 |
그렇게 각각 count를 세주면 끝~
'알고리즘 > 백준' 카테고리의 다른 글
[java] 백준 2721번 삼각수의 합 (0) | 2021.08.05 |
---|---|
[java] 백준 2355번 시그마 (0) | 2021.08.04 |
[java] 백준 1427번 소트인사이드 (4) | 2021.08.01 |
[java] 백준 5086번 배수와 약수 (4) | 2021.07.31 |
[java] 백준 2750번 수 정렬하기 (2) | 2021.07.30 |
@펄찌 :: Pearl's Story
펄의 일상이 궁금한 사람 요기~
즐거운 하루 되셨으면 좋겠습니다😊