자바 백준 26768번
브론즈 4
https://www.acmicpc.net/problem/26768
문제 보기
분류: 구현, 문자열
문제 풀기
주어진 문자열을 입력받아 하나씩 꺼내어 "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);
}
}
'공부하기 > 백준' 카테고리의 다른 글
[Java] 백준 풀기 9950 - Rectangles (0) | 2023.05.11 |
---|---|
[Java] 백준 풀기 23812 - 골뱅이 찍기 돌아간 ㅍ (0) | 2023.05.10 |
[Java] 백준 풀기 11131 - Balancing Weights (0) | 2023.05.08 |
[Java] 백준 풀기 26736 - Wynik meczu (0) | 2023.05.07 |
[Java] 백준 풀기 8371 - Dyslexia (0) | 2023.05.06 |