Develop
[프로그래머스] 한 번만 등장한 문자 본문
문제
내풀이
import java.util.Arrays;
class Solution {
public String solution(String s) {
String answer = "";
String answer1 = "";
for(int i=0; i < s.length(); i++){
if(s.indexOf(s.substring(i,i+1)) == s.lastIndexOf(s.substring(i,i+1))){
answer += s.substring(i,i+1);
}
}
// 정렬
String chars[] = new String [answer.length()];
for(int j=0; j < answer.length(); j++){
chars[j] = answer.substring(j,j+1);
}
Arrays.sort(chars);
// 정렬값 다시 넣기
for(int z=0; z < answer.length(); z++){
answer1 += chars[z];
}
return answer1;
}
}
느낀점
첨에 너무 어렵게 생각해서 꼬아서 풀다가
갑자기 처음부터 찾은 index와 끝에서부터 찾은 index값이 같으면 하나라는 생각이 들어서
코드를 중간에 싹 바꿨다
정렬을 위해 짠 코드가 너무 길다고 느낌
다른 방법이 있을텐데 모르겠어서 그냥 노가다식인 for문을 사용해서
데이터를 넣고 정렬한 후 다시 넣었다..
코드 바꾸기 전에 나던 오류
char형은 string처럼 매서드를 불러올 수 없다고 한다
아래 링크 참고하기!
오류(cannot be dereferenced)
[TIL] (230907)⛔error: char cannot be dereferenced 오류 해결하기/ 원시 데이터 타입에는 메서드를 직접 호출할 수 없다. (velog.io)
[TIL] (230907)⛔error: char cannot be dereferenced 오류 해결하기/ 원시 데이터 타입에는 메서드를 직접 호
오늘의 TIL
velog.io
다른 풀이1
class Solution {
public String solution(String s) {
int[] alpha = new int[26];
for(char c : s.toCharArray()){
alpha[c - 'a']++;
}
StringBuilder answer = new StringBuilder();
for(int i = 0; i < 26; i++){
if(alpha[i] == 1){
answer.append((char)(i + 'a'));
}
}
return answer.toString();
}
}
느낀점
나도 첨에 toCharArray를 사용했는데
sort 함수를 사용할 수 없어서 버렸음..
sort 대신 아스키코드를 이용해서 푼 문제같다
StringBuilder는 처음봐서 공부해야할듯
다른 풀이2
import java.util.*;
class Solution {
public String solution(String s) {
char[] chars = s.toCharArray();
Map<Character, Integer> charMap = new HashMap();
for(char c : chars){
charMap.put(c, charMap.getOrDefault(c, 0) +1);
}
StringBuilder sb = new StringBuilder();
for(char c : charMap.keySet()){
if( charMap.get(c) == 1){
sb.append(c);
}
}
char[] charArr = sb.toString().toCharArray();
Arrays.sort(charArr);
return new String(charArr);
}
}
느낀점
Map을 이용함
이것도 공부 후 다시 확인하기
'개인 공부 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 조건 문자열 (0) | 2024.01.17 |
---|---|
[프로그래머스] X 사이의 개수 (0) | 2024.01.16 |
[프로그래머스] 홀짝에 따라 다른 값 반환하기 (0) | 2024.01.15 |
[프로그래머스] 진료 순서 정하기 (1) | 2024.01.13 |
[프로그래머스] 두 수의 연산값 비교하기 (0) | 2024.01.13 |