1-0 수열 ZEROONE 문제 입니다.

  • 이밝음
    이밝음

    저번에도 글을 썼었는데 아직도 해결이 안되어 다시 올립니다ㅠㅠ
    그때 그 코드에서 아주 약간 바꿨는데요
    처음 수열을 BufferedReader로 해서 String타입으로 받고
    나머지 숫자들은 Scanner로 int 타입으로 받았어요
    그리고 작은숫자부터 큰숫자 까지 for문을 돌려
    String index를 이용해서 비교했습니다.
    그래서 처음 시작값과 다른 값이 나오면 바로 No를 출력하고 다른 값이 안나오면 끝까지 실행해서 Yes값을 출력합니다.

    시간은 500ms이하로 빠르게 나와요
    입력값이 한개일때도 정상적으로 나오고 algospot에서 찾아본 예제는 모두 제대로 출력됩니다.

    오답인 예제를 찾는것도 공부라고 하셔서 찾아봤는데 도저히 모르겠네요ㅠ.ㅠ
    답변 부탁드려요

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.util.Scanner;
    public class Main {

    public static void main(String[] args) throws IOException {

    Scanner scan = new Scanner(System.in);

    BufferedReader in = new BufferedReader(new InputStreamReader(System.in));

    int count = 0;                           
    
        String oz = in.readLine();      
    
        count = scan.nextInt();             
        int num[][] = new int[count][2];                
    
        for(int i = (count-1); i >=0 ; i--)        
        {           
            for(int j = 0; j < 2; j++){             
                num[i][j] = scan.nextInt();         
            }        
        }       
    
    
        /////////전체 변환문                       
        while(count!=0){                            
            int start, fini;            
            boolean same = true;            
    
    
            /////////////////////////시작점과 끝점
            if(num[count-1][0] > num[count-1][1])           
            {               
                start = num[count-1][1];                
                fini = num[count-1][0];         
            }           
            else            
            {               
                start = num[count-1][0];                
                fini = num[count-1][1];         
            }       
    
    
    
            /////////////////////////시작점부터 시작점과 다른 값이 있는지 확인, 다른값을 찾으면 바로 종료
            for(int i = start; i <= fini; i++)          
            {               
                if(oz.charAt(start) != oz.charAt(i)){                   
                    same = false;                   
                    break;              
                }               
                else                    
                    same = true;            
            }   
    
    
    
            if(same == true)                
                System.out.println("Yes");          
            else                
                System.out.println("No");   
    
            count--;                    
        }
    }

    }


    8년 전
1개의 댓글이 있습니다.
  • Being
    Being

    한 입력 스트림에 대해 ScannerBufferedReader를 섞어서 쓰시면 안 될 것 같은데요?


    8년 전 link
  • 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.