Develop

[프로그래머스] 한 번만 등장한 문자 본문

개인 공부/프로그래머스

[프로그래머스] 한 번만 등장한 문자

개발 기록 2024. 1. 16. 08:15

문제

 

 

내풀이

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을 이용함

이것도 공부 후 다시 확인하기