프로그래머스(Programmers)를 통해 코딩 테스트 사전 연습한 사항입니다.
요약
- 출처: 프로그래머스(Programmers)
- 번호: 120896
코드
public class Java_120896 {
public String solution(String s) {
List<String> strl = new ArrayList<>();
for(int i = 0; i < s.length(); i++) {
String check = String.valueOf(s.charAt(i));
if(s.indexOf(check) == s.lastIndexOf(check)) {
strl.add(check);
}
else {
s = s.replace(check, "");
i--;
}
}
strl.sort(null);
String answer = "";
for(int i = 0; i < strl.size(); i++) {
answer += strl.get(i);
}
return answer;
}
}
풀이
주어진 문자열에서 딱 1번만 등장하는 문자만 추출하기 위해서는 문자열의 모든 문자를 체크해야합니다.
String 메소드 중 해당 문자열의 인덱스 위치를 반환하는 함수이지만 처음 발견된 인덱스와 마지막 발견된 인덱스를 구하는 indexOf와 lastIndexOf 함수를 이용하여 문자열에 포함된 갯수가 1개 혹은 2개 이상임을 추측할 수 있도록 로직을 구현하였습니다.
여기서 문자열에 문자 포함 횟수를 추측하기 위해 한 번에 indexOf 메소드가 두 번 호출되어 시간 제한에 걸릴 수 있습니다. 로직 수행 시간을 줄이기 위해 두 번 이상 호출되면 빈 값으로 변경되도록 String의 replace 메소드를 사용하여 검사 횟수를 줄이도록 하였습니다.
만약 해당 문제가 사전 순서로 표시되지 않아도 된다면, List<String>을 사용하지 않고 replace 결과 살아남은 String을 반환하면 됩니다.
출처
https://school.programmers.co.kr/learn/courses/30/lessons/120896
저장소
https://github.com/Ardium/TIL/blob/master/CodingTest/Java/src/programmers/level0/Java_120896.java

'Programming > Test' 카테고리의 다른 글
[Java] 문자열 계산하기 - Programmers Q120902 (0) | 2023.04.10 |
---|---|
[Java] 컨트롤 제트 - Programmers Q120853 (0) | 2023.04.07 |
[Java] 소인수분해 - Programmers Q120852 (0) | 2023.04.05 |
[Java] 개미 군단 - Programmers Q120837 (0) | 2023.04.04 |
[Java] 분수 더하기 - Programmers Q120808 (0) | 2023.04.03 |
댓글