본문 바로가기
코딩테스트/LV. 0

LV. 0 :: 한 번만 등장한 문자

by KUROMI98 2023. 1. 26.

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

function solution(s) 
{
    var arr = [];
    arr = s.split('');
    // s를 나눠 배열로 만들어준다.
    
    var newarr = [];
    newarr = s.split('');
    // s를 나눠 또다른 배열에 만들어준다.
    
    // 배열 두 개에 저장하는 이유는 한 배열에 덮어씌우면 오류떠서 그럼
    
    for(i=0; i<s.length; i++)
    { // arr[0][0] 부터 arr[s.length][s.length] 까지 모든 원소에 대해
        for(j=0; j<s.length; j++)
        {
            if(arr[i]==arr[j])
            { // arr에 같은 값을 가진 원소가 있다면 
                newarr[i] += '0';
                // newarr의 원소 뒤에 0를 추가해준다.
            }
        }
        if(arr[i]==arr[j])
        { // arr에 같은 값을 가진 원소가 있다면 
            newarr[j] += '0';
            // newarr의 원소 뒤에 0를 추가해준다.
        }
    }
    
    // 만약 한 번만 등장하는 문자라면 0는 1개만 붙어있을 것.
    // newarr은 이런 값이 나온다. ["a000","b00","c000","a000","b00","c000","a000","d0","c000"]
    
    var answer = [];
    
    for (i=0; i<s.length; i++)
    {
        if (newarr[i].length==2)
        {   // newarr의 원소가 2글자면 한 번만 등장한 문자라는 것이기 때문에
            // 2글자인 원소를 answer라는 배열에 집어넣는다.
            answer.push(newarr[i]);
        }
    }
    // ["a0","b0","d0","c0"]
    
    var text='';
    text = answer.join(''); 
    // a0b0d0c0
    
    text = text.replace(/0/g,'');
    // abdc
    
    var answer = [];
    answer = text.split('');
    // ["a","b","d","c"]
    
    answer.sort();
    // ["a","b","c","d"]

    answer = answer.join('');
    // "abcd"
    
    var result = answer;
    if(answer.length==0){result='';}
    
    return result;
}

230603 python

def solution(s):
    answer = []
    arr = list(s)
    # 문자열 s를 하나하나 나눠 arr이라는 배열에 저장해 준다
    for i in range (0, len(arr)):
        if arr.count(arr[i]) == 1: 
            # 한번만 등장한 문자라면
            answer.append(arr[i]) 
            # answer라는 배열에 그 문자를 추가해 준다.
    return ''.join(sorted(answer))
    # answer를 사전순으로 정렬하고, 합쳐서 문자열로 바꿔준다

230916 C++

#include <string>
#include <vector>
#include <algorithm> 
using namespace std;

string solution(string s) {
    string answer = "";
    sort(s.begin(),s.end());
    for(int i=0; i<s.size();i++){
        if ( (s[i-1]!=s[i]) && (s[i+1]!=s[i]) ) {
            answer += s[i];
        }
    }
    return answer;
}

'코딩테스트 > LV. 0' 카테고리의 다른 글

LV0 :: 2의 영역  (0) 2023.10.12
LV0 :: 진료 순서 정하기  (0) 2023.10.12
LV. 0 :: 소인수분해  (0) 2023.01.26
LV. 0 :: 중복된 문자 제거  (0) 2023.01.26
LV. 0 :: 이진수 더하기  (0) 2023.01.26

댓글