https://school.programmers.co.kr/learn/courses/15008/lessons/121683?language=java
class Solution {
public String solution(String inputString) {
HashSet<String> answer = new HashSet<>();
List<String> list = new ArrayList<>();
char[] inputStringToArray = inputString.toCharArray();
String input = String.valueOf(inputStringToArray[0]);
for (int i = 1; i < inputStringToArray.length; i++) {
// 앞에 문자와 같지 않다면 map 에 집어 넣는다.
if (!String.valueOf(inputStringToArray[i]).equals(String.valueOf(inputStringToArray[i - 1]))) {
if (list.contains(input)) {
answer.add(input);
} else {
list.add(input);
}
input = String.valueOf(inputStringToArray[i]);
}
// 맨 마지막 경우의 수
if (i == inputStringToArray.length - 1 && list.contains(input))
answer.add(String.valueOf(input.charAt(0)));
}
return !answer.stream().sorted().collect(Collectors.joining()).equals("") ? answer.stream().sorted().collect(Collectors.joining()) : "N";
}
}
알파벳이 여러개 붙었을 때 개수가 같아야 하는줄 알고 풀었다가 고쳐서 코드가 효율적이지 못하고 난해해졌다. 다음에 시간 날때 다시 풀어봐야지..
결국 연속해서 나오는 알파벳이여도 연속되는 개수는 상관이 없으므로 (A = AAA) 따라서 전체 문장 중에 알파벳이 하나 건너 뛰어서 나오는 경우만 찾아내면 된다.
어떤 알파벳인지 알아내는 방법으로 char 아스키 코드를 활용하면 97이 소문자 a이므로 97 + 0~26까지 반복문 돌려서 어떤 알파벳인지 알아낼 수 있다.
'코테 > 프로그래머스' 카테고리의 다른 글
포켓몬 Java 풀이 (0) | 2023.05.04 |
---|---|
완주하지 못한 선수 Java 풀이 (0) | 2023.05.04 |
2023 KAKAO BLIND RECRUITMENT 개인정보 수집 유효기간 (Java.ver) (0) | 2023.05.03 |
[프로그래머스 Lv.2] 카펫 (kotlin ver.) (0) | 2022.12.14 |
[프로그래머스 Lv.1] 기사단원의 무기 (kotlin ver.) (0) | 2022.12.14 |