Etc/알고리즘

[softeer] 7703

jjuni_96 2024. 7. 11. 19:35
728x90

문제

 

 

메모리 제약

 

 

입/출력

 

 

 

문제 분석

단순 연산 문제여서 문제를 따라서 진행하면 될 것 같다고 생각함

 

 

풀이 1

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

public class Main {

    public static void main(String[] args) throws IOException {
        // https://softeer.ai/practice/7628

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


        /*
            * 그냥 단순 구현 문제
            * 순서대로 따라가면됨
         */
        int count = Integer.parseInt(bf.readLine());

        // 해당위치 값 찾기
        String answer = "";

        // input
        for (int i = 0; i < count; i++) {
            String inputStr = bf.readLine();
            String findXStr = inputStr.split(" ")[0];
            String findIdxStr = inputStr.split(" ")[1];


            // 첫번째에서 x 혹은 X 위치 찾기
            int idx = 0;
            for (int j = 0; j < findXStr.length(); j++) {
                if ('x' == findXStr.charAt(j) || 'X' == findXStr.charAt(j)) {
                    idx = j;
                    break;
                }
            }

            // 대문자로 변환
            answer += findIdxStr.charAt(idx);
        }
        System.out.println(answer.toUpperCase());
    }
}

 

 

실패

시간초과.....

 

예상되는 문제 구간

1, 입력 처리 속도

2. 'x', 'X' 위치 찾는 속도

3. split 중복 처리

 

1, 2, 3번 다 수정 후 작업을 해봤는데 시간초과는 변하지 않았다...

 

무슨 수를 써도 이해가 되지 않아서 검색을 해보았는데, "String 대신 StringBuiler를 사용하라는 얘기를 보았다"

왜...? 무슨 차인데요..? 하면서 찾아보니 어마어마하게 큰 차이가 있었다.....

2024.07.11 - [BE/Java] - String, StringBuffer, StringBuilder 의 차이

 

 

풀이 2

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

public class Main {

    public static void main(String[] args) throws IOException {
        // https://softeer.ai/practice/7628

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


        /*
            * 그냥 단순 구현 문제
            * 순서대로 따라가면됨
         */
        int count = Integer.parseInt(bf.readLine());

        // 해당위치 값 찾기
        StringBuilder answer = new StringBuilder();

        // input
        for (int i = 0; i < count; i++) {
            String[] inputStrs = bf.readLine().split(" ");
            String findXStr = inputStrs[0];
            String findIdxStr = inputStrs[1].toUpperCase();

            int idx = findXStr.indexOf('x');
            idx = (idx == -1) ? findXStr.indexOf('X') : idx;

            // 대문자로 변환
            answer.append(findIdxStr.charAt(idx));
        }
        System.out.println(answer);
    }
}

 

 

 

성공!

 

 

링크

https://softeer.ai/practice/7703

 

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

 

softeer.ai

 

728x90
반응형
LIST