-
https://www.acmicpc.net/problem/5525
https://github.com/JUNGSOONIL/JAVA/blob/main/BAEKJOON%205525
해당 문제는 문자열이 주어졌을 때 IOI가 몇 개 존재하는지 구하는 문제다.
단 IOI의 길이가 주어진다
1 : IOI
2:IOIOI
해당 문제를 보고 처음에는 2중 포문을 돌려서 비교를 해서 문제를 풀었더니 50점이 나왔다..
그래서 반복문 하나로 할 수 없을까라 생각을 하다가 그냥 한번 반복문 돌면서 3개를 모두 비교해 주는 방법으로
해결했다.
시작은 1 종료는 M-1까지 반복문을 돌면서
IOI가 들어오면 카운트를 증가시키고 이때 중요한 게 i 값도 증가시켜줘야지 두 칸 건너뛴 값으로 간다!
만약 IOI가 들어오지 않으면 현재 카운트를 0으로 바꿔준다 이 부분은 IOI 길이가 1일 땐 상관 없지만 2 이상부터는
연속해서 나와야 하기 때문에 이어지는 부분 구별을 위해서
이후 만약 카운트한 숫자랑 IOI 길이와 같다면 ans를 1증가 시켜주는데 이때 카운트는 1 빼줘야 한다
예를 들어 현재 길이가 3인 부분을 찾는다고 했을 때
IOIOIOIOI 현재 빨간 부분까지 탐색했을 때 카운트는 3이고 길이와 같아서 ans를 증가시켜준다
이후 다음 문자열을 확인하는데 이때 만약 카운트가 그대로라면 4가 되어 만족하지 못하기 때문에
꼬리를 뗀다는 느낌으로 1을 빼주어야 한다.(핑크 부분 제거)
728x90'알고리즘 > Baekjoon' 카테고리의 다른 글
Baekjoon 12015 가장 긴 증가하는 부분 수열 2 JAVA (0) 2021.11.12 Baekjoon 11286 절댓값 힙 JAVA (0) 2021.11.12 Baekjoon 14503 로봇 청소기 JAVA (0) 2021.11.12 Baekjoon 11403 경로 찾기 JAVA (0) 2021.11.12 Baekjoon 1389 케빈 베이컨의 6단계 법칙 JAVA (0) 2021.11.12 댓글