🤯 코딩테스트/Javscript

[자바스크립트 알고리즘 문제풀이(코딩테스트 대비)] Section 01 - 대문자로 통일

kangkibong 2022. 1. 8. 16:07

※ 문제

대문자와 소문자가 같이 존재하는 문자열을 입력받아 대문자로 모두 통일하여 문자열을 출력하는 프로그램을 작성하세요.

 

▣ 입력설명

첫 줄에 문자열이 입력된다. 문자열의 길이는 100을 넘지 않습니다.

 

▣ 출력설명

첫 줄에 대문자로 통일된 문자열이 출력된다.

 

▣ 입력예제 1

ItisTimeToStudy

 

▣ 출력예제 1

ITISTIMETOSTUDY

 

※ 코드

<html>

<head>
  <meta charset="UTF-8">
  <title>출력결과</title>
</head>

<body>
  <script>
    function solution(s) {
      let answer = "";
      for(let x of s) {
        if(x === x.toLowerCase()) {
          answer += x.toUpperCase();
        } else {
          answer += x;
        }
      }
      return answer;
    }

    let str = "ItisTimeToStudy";
    console.log(solution(str));
  </script>
</body>

</html>

<html>

<head>
  <meta charset="UTF-8">
  <title>출력결과</title>
</head>

<body>
  <script>
    function solution(s) {
      let answer = "";
      for(let x of s) {
        num = x.charCodeAt();
        if(num >= 97 && num <= 122) {
          answer += String.fromCharCode(num - 32);
        } else {
          answer += x;
        }
      }
      return answer;
    }

    let str = "ItisTimeToStudy";
    console.log(solution(str));
  </script>
</body>

</html>

 

※ 설명

  • 첫번째 방법(대·소문자 변환 내장함수 사용) 문자열 s의 item(=x)를 확인하기 위해 for문을 작성하고 x가 toLowerCase() 즉, 소문자일 경우 answer(빈 문자열 할당)에 x를 toUpperCase()한 값을 더해주고 그렇지 않을 경우 answer에 x를 더해준다.
  • 두번째 방법(아스키코드 변환 내장함수 사용) 문자열 s의 item(=x)를 확인하기 위해 for문을 작성하고 x를 아스키코드로 변환하기 위해 charCodeAt()을 사용하여 num변수에 할당한다. 이후 num이 97 ~ 122(소문자)일 경우 num -32(=(대문자 아스키코드 - 32) = 소문자 아스키코드))를 String.fromCharCode()를 사용하여 answer에 더해주고 그렇지 않을 경우 answer에 x(소문자 그자체)를 더해준다.

 

※ 핵심

  1. 아스키코드 ⇒ 문자열 String.fromCharCode()

해당 내용은 김태원님의 자바스크립트 알고리즘 문제풀이 강의를 듣고 작성한 글입니다.