처음으로 한 번만 나온 문자
자바스크립트 코딩테스트 문제로 hash 주제를 연습해보세요. 난이도는 easy이며, 브라우저에서 바로 JavaScript로 풀이를 실행할 수 있습니다.
문자열에서 한 번만 등장한 문자들 중 가장 먼저 나온 문자를 찾아 반환하세요. 그런 문자가 없으면 빈 문자열 ""을 반환하면 됩니다.
제한사항
- 입력
s는 길이0이상100,000이하의 문자열입니다. - 문자열은 영문 소문자로만 이루어져 있습니다.
- 한 번만 나온 문자가 없으면 빈 문자열
""을 반환합니다. - 반환값은 길이 1의 문자열 또는 빈 문자열입니다.
예시
- 입력:
"swiss"→ 출력:"w" - 입력:
"aabbccdeeff"→ 출력:"d" - 입력:
"aabbcc"→ 출력:""
힌트
- 먼저 각 문자가 몇 번 나왔는지 세어 보세요.
- 그다음 원래 문자열을 다시 앞에서부터 보면서, 등장 횟수가 1인 문자를 찾으면 됩니다.
해설
이 문제의 핵심은 등장 횟수 계산과 원래 순서 유지를 분리하는 것입니다.
- 첫 번째 순회에서 각 문자의 등장 횟수를 객체나
Map에 저장합니다. - 두 번째 순회에서 문자열을 다시 앞에서부터 확인합니다.
- 등장 횟수가 1인 문자를 처음 만나면 바로 반환합니다.
- 끝까지 없으면 빈 문자열을 반환합니다.
이 방식은 문자열을 두 번만 순회하므로 시간 복잡도는 O(n)입니다.
function solution(s) {
const count = {};
for (const ch of s) {
count[ch] = (count[ch] || 0) + 1;
}
for (const ch of s) {
if (count[ch] === 1) {
return ch;
}
}
return '';
}
코드 작성
starter code를 바탕으로 함수를 완성한 뒤 예제 테스트를 실행해보세요.
JavaScript
에디터 로딩 중...
커스텀 테스트
함수 인자를 JSON 배열 형태로 입력하세요. 예: [3, 5], [[1, 2, 3]]
아직 실행하지 않았습니다.
실행 결과
아직 실행하지 않았습니다.
예제 테스트를 실행하면 여기에서 결과를 확인할 수 있습니다.
댓글
문제 풀이 아이디어, 질문, 반례를 자유롭게 나눠보세요.