728x90
반응형

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

 

15881번: Pen Pineapple Apple Pen

여러 개의 사과, 파인애플, 그리고 펜이 일렬로 세워져 있다. 이 물건들의 순서를 바꾸지 않고 옆에 있는 물건끼리 연결했을 때, 펜-파인애플-애플-펜을 몇 개나 만들 수 있을지 세어보자. 단, 펜,

www.acmicpc.net

 

 

이 문제는 다이나믹 프로그래밍 정복하려고 풀던 중에 만난 문제다.

 

나름 간단하게 구현해서 예제들도 제대로 돌아갔는데 제출하면 틀렸다고 떠서 빡쳤는데,,

 

혹시 나랑 같은 사정에 빠진 분이라면,,

=> pPAppPAp 이걸 넣었을 때 2가 나오는지 확인해보길,,!

나는 1이 나왔었다..ㅋㅋ 그래서 내 코드의 오류를 발견할 수 있었당

 

[코드]

import java.util.*;
import java.io.*;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(br.readLine());
        String s = br.readLine();
        int answer = 0;

        for(int i=0;i<n;i++){
            if(s.charAt(i) == 'p' && i+3<n){
                if(s.substring(i,i+4).equals("pPAp")) {
                    answer++;
                    i+=3; //개인적으로 여기가 킬포..
                }
            }
        }
        System.out.println(answer);
    }
}

 

내가 코드에 주석을 달아놓은 부분이 문제의 원인이었다.

i+=4로 짰었는데 생각해보니까!

for문은 한번 루프 돌 때마다 i++을 해주기 때문에!! 여기서 i+=4를 하면 총 i+=5가 된다..!!

 

이거 깨닫고 넘 허무해서 웃겼다..ㅋㅋㅋ

728x90
반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기