Programmers | 코딩테스트 입문 - 한 번만 등장한 문자(자바,파이썬), HashMap key값으로 정렬하기
2023. 1. 4. 14:43ㆍ공부/Programmers
프로그래머스 Lv.0 한 번만 등장한 문자
JAVA
import java.util.*;
class Solution {
public String solution(String s) {
String answer = "";
HashMap<String,Integer> map = new HashMap<>();
for(int i=0; i<s.length(); i++){
String c = s.substring(i,i+1);
if(!map.containsKey(c)){
map.put(c, 1);
}else{
map.put(c, map.get(c)+1);
}
}
List<String> keyList = new ArrayList<>(map.keySet());
Collections.sort(keyList); //정렬
for(String k : keyList){
if(map.get(k) == 1){
answer += k;
}
}
return answer;
}
}
1. HashMap에 key값은 영문자, value는 해당 영문자갯수를 삽입했다.
2. HashMap은 순서가 없는 구조이기 때문에, key값만 갖는 list로 변환하여 정렬했다.
3. 정렬한 list 순서대로 해당 key의 value가 '1'인 경우에만 String(answer)에 더했다.
원래는 String에 담은 후에 문자열 정렬을 하려고 했지만, 안먹혀서 오래 걸렸지만 덕분에 HashMap 정렬 방법을 배웠다.
Python3
def solution(s):
return ''.join(sorted([i for i in s if s.count(i) == 1]))
'공부 > Programmers' 카테고리의 다른 글
Programmers | 코딩테스트 입문 - 문자열 계산하기(자바,파이썬), eval (0) | 2023.01.06 |
---|---|
Programmers | 코딩테스트 입문 - 소인수분해(자바) (0) | 2023.01.05 |
Programmers | 코딩테스트 입문 - 모스부호(1) (자바,파이썬), HashMap 한번에 여러개 추가하기 (0) | 2023.01.03 |
Programmers | 코딩테스트 입문 - 팩토리얼(자바,파이썬), factorial (0) | 2023.01.03 |
Programmers | 코딩테스트 입문 - 직각삼각형 출력하기(자바,파이썬), 문자열 반복, repeat, * (0) | 2022.12.29 |