반응형
1. 문제 정의
2. 문제 접근
문자열을 하나씩 떼어서 문자로 만든 후, for문을 돌면서 연속해서 중복되는지를 판별해주면 될 것 같다.
체크를 위해 문자를 key로 하는 map과 set을 써서 비교를 위한 객체 하나와 정답을 담을 객체 하나를 정의해서 문제를 풀이할 것이다.
Set 은 요소의 저장 순서를 유지하지 않고, 같은 요소의 중복 저장을 허용하지 않는 특징이 있다.
HashSet, TreeSet 등이 있으며, TreeSet은 위의 기능 + 오름차순 정렬이라는 특징까지 가지고 있어서 TreeSet으로 정답 객체를 구현하였다.
3. 문제풀이
- 문자를 담아줄 객체 Map 과 정답을 담아줄 객체 Set 을 정의한다.
- 입력 받은 String 을 Char 배열로 Casting 해준다.
- for문을 돌면서 조건을 확인한다.
3-1. 현재 문자와 비교 문자를 비교한다.
3-2. 만약 현재 문자와 비교 문자가 같지 않다면 map에 현재 문자가 들어있는지 확인한다.
3-3. 만약 map에 현재 문자가 들어있다면 연속해서 나온 문자가 아니기 때문에 set에 추가해준다.
3-4. 현재 문자를 map에 넣어준다.
3-5. 현재 문자를 비교 문자로 다시 치환해준다. - set에 있는 문자들을 정답에 추가해준다.
- 정답을 출력한다.
4. 코드
import java.util.*;
class Solution {
public String solution(String input_string) {
String answer = "";
Map<Character,Boolean> map = new HashMap<>();
Set<Character> set = new TreeSet<>();
char[] char_arr= input_string.toCharArray();
char curr_char=' ';
for(char now_char:char_arr){
if(curr_char!=now_char){
if(map.containsKey(now_char)){
set.add(now_char);
}
map.put(now_char,true);
curr_char=now_char;
}
}
for(char cha :set){
answer+=cha;
}
if(answer.equals("")) {
answer = "N";
}
return answer;
}
}
5. 회고
문제 자체는 쉬운것 같은데 구현하려는데 생각보다 오래 걸렸다.
반응형
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
PCCP 모의고사 2회 - 카페 확장 (1) | 2023.02.18 |
---|---|
PCCP 모의고사 2회 - 신입사원 교육 (0) | 2023.02.18 |
PCCP 모의고사 2회 - 실습형 로봇 (0) | 2023.02.18 |
PCCP 모의고사 1회 - 유전법칙 (0) | 2023.02.18 |
PCCP 모의고사 1회 - 체육대회 (0) | 2023.02.18 |