알고리즘

백준 2941 (Java)

Codult 2023. 11. 27. 16:53
728x90

질문게시판 다 뒤져보면서 온갖 반례는 다 넣어봤는데, 잘 된다!!

근데 왜 백준에서는 자꾸 틀렸습니다라고 뜨는지.. 정말 답답했다.

어떤 값을 넣었더니 틀렸는지 정도는 알려줄 수 있는거아니냐 백준..

 

나는 결국 다른 분 풀이 참고해서 풀었다.

import java.util.*;

public class Main{
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        String input=sc.nextLine();
        
        String[] words={"c=","d-","dz=","c-","lj","s=","nj","z="};

        for (int i=0; i<words.length; i++) {
            if (input.contains(words[i])) {
                input=input.replaceAll(words[i], "*");
            }
        }

        System.out.println(input.length());
    }
}

출처: https://mingbee.tistory.com/18

 

내가 했던 방법은 아래와 같은데, 뭐가 도대체 문제였던 건지 모르겠다.

혹시 Java11이 삼중조건을 못읽나? 싶어서 조건도 따로따로 설정해봐서 더 더러워진 결과물..

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        char[] chars = sc.next().toCharArray();
        String[] word = new String[chars.length];
        for (int i=0; i<chars.length; i++){
            word[i]=Character.toString(chars[i]);
        }
        int count=0;
        for (int i=0; i<word.length; i++){
            if (word[i].equals("=") && i>0){
                if (word[i-1].equals("c")|| word[i-1].equals("s")){
                    word[i]="none";
                    word[i-1] = "none";
                    if (i>1 && word[i-2].equals("d")){
                        word[i-2]="none";
                    }
                    count++;
                }
                else if (word[i-1].equals("z")){
                    word[i]="none";
                    word[i-1] = "none";
                    if (i>1 && word[i-2].equals("d")){
                        word[i-2]="none";
                    }
                    count++;
                }
            }
            else if (word[i].equals("-")&&i>0){
                if (word[i-1].equals("c")|| word[i-1].equals("d")){
                    word[i] = "none";
                    word[i-1] = "none";
                    count++;
                }
            }
            else if (word[i].equals("j")&&i>0){
                if (word[i-1].equals("l")|| word[i-1].equals("n")){
                    word[i]="none";
                    word[i-1]="none";
                    count++;
                }
            }

        }
        for (int i=0; i<word.length; i++){
            if (!word[i].equals("none") && !word[i].equals("=")){
                if (!word[i].equals("-")) count++;
            }
        }
        System.out.println(count);
    }
}
728x90