문제
https://softeer.ai/practice/7703
풀이(11분)
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
StringBuilder sb = new StringBuilder();
for (int i = 0; i < n; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
String s = st.nextToken();
String t = st.nextToken();
t = t.toUpperCase();
// 'x' 또는 'X'의 위치 찾기
int idx = s.toLowerCase().indexOf('x');
// 'x' 또는 'X'가 없거나 잘못된 인덱스일 경우 예외 처리
if (idx == -1 || idx >= t.length()) {
return;
}
char tChar = t.charAt(idx);
sb.append(tChar);
}
System.out.println(sb);
}
}
문제 풀이 전략
500,000개의 문자 입력이 가능하고, 최대 100만까지의 총 문자열의 길이가 주어진다.
즉, O(N) 탐색을 하더라도 100만번의 계산만 이루어지기에 indexOf를 사용하여도 문제가 없다고 판단했다.
로직은 간단하다.
1. 먼저 idx를 찾기 위해 s문자열을 소문자로 모두 치환한 뒤 x의 인덱스를 찾는다.
2. t를 모두 대문자로 변경해둔다.(어차피 t의 인덱스만 통하여 대문자로 반환할 것이기 때문이다.)
3. 모인 문자열을 출력한다.
'문제 풀이 > 소프티어' 카테고리의 다른 글
[소프티어] 장애물 인식 프로그램(JAVA) (0) | 2025.03.19 |
---|---|
[소프티어] 지도 자동 구축(JAVA) (0) | 2025.03.18 |
[소프티어] 연탄의 크기(JAVA) (0) | 2025.03.14 |
[소프티어] 징검다리(JAVA) (0) | 2025.03.13 |
[소프티어] 바이러스(JAVA) (0) | 2025.03.12 |