본문 바로가기

Development/CodingTest

[String] [한양대 HCPC 2023] X marks the Spot Java 풀이 ( + 시간 초과 해결)

https://softeer.ai/practice/7703

 

Softeer - 현대자동차그룹 SW인재확보플랫폼

 

softeer.ai

문제 풀이법

  1. 'X' 또는 'x'의 위치는 유일하므로 for 문 순회하면서 문자를 찾음(charAt() 사용), 찾으면 break
  2. Character.toUpperCase()를 사용하여 소문자를 대문자 변경

시간 초과 해결

처음엔 answer 라는 스트링에 + 연산으로 문자들 하나씩 이어 붙이고, System.out.println()으로 출력을 했는데

3초 이상의 시간이 걸리길래..

BufferedWriter를 사용했더니 0.xxx 초 대로 빨라졌다.

 

코드

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

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        StringTokenizer st = new StringTokenizer(in.readLine());
        
        int numOfCase = Integer.parseInt(st.nextToken());
        for (int i = 0; i < numOfCase; i++) {
            st = new StringTokenizer(in.readLine());
            String text1 = st.nextToken();
            String text2 = st.nextToken();
            for (int j = 0; j < text1.length(); j++) {
                if (text1.charAt(j) == 'X' || text1.charAt(j) == 'x') {
                    bw.write(Character.toUpperCase(text2.charAt(j)));   
                    break;
                }
            }
        }
        bw.flush();
    }
}