본문 바로가기
프로그래머스 문제풀어보기

[Lv.0] 한 번만 등장한 문자

by dantriss 2023. 3. 20.


https://school.programmers.co.kr/learn/courses/30/lessons/120896

원래하려고 했던 방법이 되지않아서,  고민하다가 다른 방식을 참고해서 작성했다.

우선은 알파벳의 갯수만큼 길이 26인 배열 charList를 선언한다.

 

그후 반복문을 활용해 charList에 문자열 s에 0번째부터 마지막자리수 까지 charAt()을 활용해 문자로 형변환 한 후 소문자 a를 뺀다 그렇게 하면 s[0]이 a일경우 a-a(=아스키코드 97-97)로 0이 될 것이고 알파벳의 길이만큼 배열의 길이를 설정한 charList의 0번째 자리가 증감연산자"++"에 의해 증가할 것이다.

그 후 springBuilder sb를 선언한다.

또 다른 반복문을 활용해 charList에서 그 값이 1인경우에는 문자열 s에 단 한 번만 등장했다는 이야기이기 때문에 해당 조건에 일치하는 값들의 위치값+소문자a를(=아스키코드로변환해서 소문자로 출력하기위함) 더한 값을 springBuilder sb에 저장한다.

그런다음 리턴값을 string으로 맞춰줘야하기 때문에 springBuilder인 sb를 toString을 이용해 변환해준 값을 리턴한다.

 

import java.util.*;
class Solution {
    public String solution(String s) {
        String answer = "";
        char[] charList = new char[26]; 
    
        for(int i = 0; i<s.length(); i++){
            charList[s.charAt(i)-'a']++;
            
        }
        
        StringBuilder sb = new StringBuilder(); 
        for (int j = 0; j < charList.length; j++) {
           
            if (charList[j] == 1) 
                
            {
                sb.append((char) (j + 'a'));
            }
        }
        
        return sb.toString();
    }
}

 

참조 : 

springBuilder 사용법

'프로그래머스 문제풀어보기' 카테고리의 다른 글

[Lv.0] 종이자르기  (0) 2023.03.22
[Lv.0] 잘라서 배열로 저장하기  (0) 2023.03.21
[Lv.0] 7의 개수  (0) 2023.03.19
[Lv.0] 공 던지기  (0) 2023.03.13
[Lv.0] 진료 순서 정하기  (0) 2023.03.13

댓글