Vienna
프로그래머스) 한 번만 등장한 문자 본문
https://school.programmers.co.kr/learn/courses/30/lessons/120896?language=java
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
◇ 문제 설명
문자열 s가 매개변수로 주어집니다. s에서 한 번만 등장하는 문자를 사전 순으로 정렬한 문자열을 return 하도록 solution 함수를 완성해보세요. 한 번만 등장하는 문자가 없을 경우 빈 문자열을 return 합니다.
◇ 제한사항
- 0 < s의 길이 < 1,000
- s는 소문자로만 이루어져 있습니다.
◆ 풀이
지난 번에 이미 풀어본 문제다.
지난 번에는 이런 코드로 풀었다.
class Solution {
public String solution(String s) {
StringBuilder result = new StringBuilder();
for(int i=0; i<26; i++){
char digit = (char)(i+97);
if(IsOnlyNum(s, digit)){
result.append(digit);
}
}
return result.toString();
}
private boolean IsOnlyNum(String str, char targetChar){
int count=0;
for (int i = 0, iMax = str.length(); i < iMax; i++) {
if(str.charAt(i)==targetChar && ++count>1){
return false;
}
}
if(count>0)
return true;
else
return false;
}
}
다른 방식으로는 어떻게 풀어볼 수 있을까?
String의 indexof 함수를 이용하면 이렇게 풀 수 있을 것이다.
class Solution {
public String solution(String s) {
StringBuilder result = new StringBuilder();
for(int i=0; i<26; i++){
char digit = (char)(i+97);
if(IsOnlyNum(s, digit)){
result.append(digit);
}
}
return result.toString();
}
private boolean IsOnlyNum(String str, char targetChar){
int firstIndex = str.indexOf(targetChar);
int lastIndex = str.lastIndexOf(targetChar);
return firstIndex>=0 && firstIndex == lastIndex;
}
}

'알고리즘 문제 풀이' 카테고리의 다른 글
백준5613번) 계산기 프로그램 (0) | 2023.05.24 |
---|---|
프로그래머스) 배열 회전시키기 (0) | 2023.05.24 |
백준10807번) 개수 세기 (1) | 2023.05.16 |
백준2830번) 행성 X3 (0) | 2023.05.16 |
백준9012번) 괄호 (0) | 2023.05.16 |