공부하기/백준

[Java] 백준 풀기 26768 - H4x0r

XEV 2023. 5. 9. 23:52

자바 백준 26768번

브론즈 4

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

 

26768번: H4x0r

Od dawna wiadomo, że hakerzy posługują się własnym językiem, różnymi skrótami i innymi formami zaciemniania, żeby zacierać ścieżki po sobie. O najlepszych z nich zwykle mawia się „h4x0rzy”. Niektórzy hakerzy czasami zamieniają niektóre

www.acmicpc.net

 

 

 

 

 

문제 보기

분류: 구현, 문자열

 

 

 

 

 

문제 풀기

주어진 문자열을 입력받아 하나씩 꺼내어 "a", "e", "i", "o" 그리고 "s" 인지 판단하여 각각 4, 3, 1, 0, 5 로 치환하여 출력한다.

 

초기 풀이에서는 한 줄 문자열을 입력받고 split() 함수를 통해 나눈 뒤 각 문자를 판단하여 하나의 String 으로 합쳐서 풀이하였는데, 예제 입력에서는 문제가 없었으나 답안 제출에서는 바로 시간초과가 걸렸다. 주어진 문자열이 최대 1,000,000 까지라서 그런 듯하다.

따라서, 한 줄의 입력 문자열이 주어지면 이를 저장하고 for loop 와 charAt() 함수를 통해 바로바로 판단하고 누적출력하는 형태로 풀이를 바꾸었다. 제출하고 결과 퍼센트가 올라가는데 서버에 사람이 몰려서 그런건지 아님 답안을 분석하는데 오래걸려서 그런건지 정말 천천히 올라갔다.

 

 

 

 

 

 

 

코드 보기

- "맞았습니다" 코드

import java.util.Scanner;

public class Main {
    public static void main(String args[]) {
        
        Scanner sc = new Scanner(System.in);
        
        String inputText= sc.next();
        
        for (int i = 0; i < inputText.length(); i++) {
            if (inputText.charAt(i) == 'a') System.out.print("4");
            else if (inputText.charAt(i) == 'e') System.out.print("3");
            else if (inputText.charAt(i) == 'i') System.out.print("1");
            else if (inputText.charAt(i) == 'o') System.out.print("0");
            else if (inputText.charAt(i) == 's') System.out.print("5");
            else System.out.print(inputText.charAt(i));
        }
        
    }
}

 

 

- "시간 초과" 코드

import java.util.Scanner;

public class Main {
    public static void main(String args[]) {
        
        Scanner sc = new Scanner(System.in);
        
        String[] inputText= sc.next().split("");
        
        String result = "";
        
        for (String t : inputText) {
            if (t.equals("a")) result += "4";
            else if (t.equals("e")) result += "3";
            else if (t.equals("i")) result += "1";
            else if (t.equals("o")) result += "0";
            else if (t.equals("s")) result += "5";
            else result += t;
        }
        
        System.out.print(result);

    }
}