본문 바로가기
코드카타/코딩테스트

문자열 다루기 기본

by WaDDak 2024. 8. 22.

https://school.programmers.co.kr/learn/courses/30/lessons/12918?language=javascript#

 

프로그래머스

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

programmers.co.kr

 

 

C++ 풀이 :

 

#include <string>
#include <vector>
#include <iostream>

using namespace std;

bool solution(string s) {
    bool answer = true;
    int Size = s.size();
    // 48 ~ 57
    
    if(Size == 4 || Size == 6)
    {
        for(int i = 0; i < Size; i++)
        {
            int Num = static_cast<int>(s.c_str()[i]);
            if(48 > Num ||  Num > 57)
            {
                answer = false;
                return answer;
            }
        }
    }
    else
    {
        answer = false;
    }
    

    
    return answer;
}

아스키코드를 이용하여 크고작음을 비교하여 풀었다.

 

 

JS 풀이 :

일단 오답 풀이 :

 

function solution(s) {
    let answer = false;
    
    for(let i = 0; i < s.length; i++){
        if(s[i] === " "){
            return answer;
        }
    }

    
    if(s.length !== 4 && s.length !== 6){
        return answer;
    }
        
    // s 의 앞문자열이 0일때가 문제여서 sort함
    const str = s.split("").sort((a,b) => b - a).join("");
    
    const strA = str;
    const strB = parseInt(strA) + "";
    
    
    if(strA === strB){
        answer = true;
    }
    
    return answer;
}

 

코드 해설 :

  1. 문자열을 쪼개서 배열로 만들어 큰숫자부터 나오도록 정렬하였다, => 이유는 작은숫자부터 정렬하면 0001 과 같은것들을 parseInt하면 1로나오기 때문.
  2. 이후에 그렇게 정렬한 문자열 원본과, 그 문자열을 parseInt하고 다시 문자열로 바꾼것이 같다면 true가 나오는 방식으로 구현했다.
  3. 여기서 공백이 나올때 예외사항이 발생하는데 그것은 위쪽 if 문에서 공백이 나오면 return 하도록 걸러주었다.
  4. 그럼에도 예외 케이스가 있었다. 0000   000000을 걸러내지 못해서 실패한 코드가 되었다.

 

function solution(s) {
    let answer = false;
    
    if(s.length !== 4 && s.length !== 6){
        return answer;
    }
        
    for (let i = 0; i < s.length; i++) {
        if (isNaN(s[i]) || s[i] === ' ') {
            
            return answer;
        }
    }
    
    answer = true;
    
    return answer;
}

 

  1. isNaN() 함수는 문자가 숫자가 아닌 경우를 확인합니다. 숫자가 아닌 문자가 발견되면 false를 반환하는 함수입니다.
  2. 위 함수를 이용하면 쉽게 해결 가능하다.

'코드카타 > 코딩테스트' 카테고리의 다른 글

크기가 작은 부분문자열  (0) 2024.08.25
이상한 문자 만들기  (0) 2024.08.25
수박x22222  (0) 2024.08.20
가운데 글자 가져오기  (0) 2024.08.20
제일 작은 수 제거하기  (0) 2024.08.20