Algorithm | 문자열 ⇨ 정수, 가운데 글자 가져오기

프로그래머스 lv1

1. 문자열 ⇨ 정수

문제설명

문자열 s를 숫자로 변환한 결과를 반환하는 함수, solution을 완성하세요.

제한조건

  • s의 길이는 1 이상 5이하입니다.
  • s의 맨앞에는 부호(+, -)가 올 수 있습니다.
  • s는 부호와 숫자로만 이루어져있습니다.
  • s는 0으로 시작하지 않습니다.

입출력 예

예를들어 str이 1234이면 1234를 반환하고, -1234이면 -1234를 반환하면 됩니다.
str은 부호(+,-)와 숫자로만 구성되어 있고, 잘못된 값이 입력되는 경우는 없습니다.


나의 풀이

function solution(s) {
    const answer = s*1;
    return answer;
};

다른 풀이

function strToInt(str){
  return str/1
  }
function strToInt(str){
  return  +str;
}
function strToInt(str){
  var result = Number(str);
  return result;
}

결론

더 간단하게!!



2. 가운데 글자 가져오기

문제 설명

단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요. 단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다.

제한 조건

  • s는 길이가 1 이상, 100 이하인 스트링입니다.

입출력 예

sreturn
"abcde""c"
"qwer""we"

나의 풀이

function solution(s) {
    const halfIndex = s.length/2;
    let answer = '';
    
    if(Number.isInteger(halfIndex)){
        answer = s[halfIndex-1]+s[halfIndex];
    } else {
        answer = s[Math.floor(halfIndex)]
    }
    return answer;
}

다른 풀이 #1 🚫

function solution(s) {
    return s.substr(Math.ceil(s.length / 2) - 1, s.length % 2 === 0 ? 2 : 1);
}

str.substr(start[, length])_
substr(): 메서드는 문자열에서 특정 위치에서 시작하여 특정 문자 수 만큼의 문자들을 반환합니다.

String.prototype.substr()는 웹 표준에서 제거된건 아니지만 사용하지말라고 되어있다. 그래도 알고 사용하지 않는 것과 모르고 사용하지 않는 것은 다르니까!

또 비슷한 기능을 substring()메소드 를 통해서 구현해낼 수 있다. -> 다른 풀이 #2


다른 풀이 #2

function solution(s) {
  let sLength = Math.floor(s.length / 2);
  if (s.length % 2 === 0) {
    return s.substring(sLength - 1, sLength + 1);
  } else {
    return s.substring(sLength, sLength + 1);
  }
}

- str.substring()

✔️ str.substring(indexStart[, indexEnd])

  • 인자값
    • indexStart
      : 반환문자열의 시작 인덱스
    • indexEnd( Optional )
      : 반환문자열의 마지막 인덱스 (포함하지 않음.)
  • 반환값
    기존문자열의 부분 문자열을 반환합니다.

다른 풀이 #3

다른 풀이 #2를 연산자 %charAt() 를 사용하여 조금 더 간결하게 쓸 수 있다.

function solution(s) {
    const halfIndex = s.length/2;
    return halfIndex%1?
        s.charAt(Math.floor(halfIndex)):
        s.substring(halfIndex-1, halfIndex+1);
}

나머지 연산자% 를 통해서 1로 나누었을때 정수가 아니라면 1로 나누었을때 나머지가 있다는 것을 이용.

- str.charAt()

: charAt() 함수는 문자열에서 특정 인덱스에 위치하는 유니코드 단일문자를 반환합니다.

✔️ str.charAt(index)

  • 매개변수
    : 0과 문자열의 길이 - 1 사이의 정수값.
    : 인자를 생략하면 기본값으로 0를 설정되고 첫 문자를 반환한다.
  • 반환 값
    : 지정된 인덱스에 해당하는 유니코드 단일문자를 반환한다.
    : 만약 인덱스가 문자열 길이보다 큰 경우 빈 문자열 (예) " " 을 반환한다.

- 나머지 연산자 %

나머지 연산자(remainder operator)는 % 기호로 나타내지만, 비율을 나타내는 퍼센트와 관련이 없습니다.

나머지 연산자를 사용한 표현식 a % b는 a를 b로 나눈 후 그 나머지(remainder)를 정수로 반환해줍니다.

결론

기초 중의 기초도 모르는 것이 많은 것 같다. 열심히, 빠르게 배워가야겠다.

좋은 웹페이지 즐겨찾기