TIL. 알고리즘 문제풀이

seul_velog·2022년 10월 14일
0

TIL_algorithm

목록 보기
8/26

1. 대문자 찾기

문제 설명

한 개의 문자열을 입력받아 해당 문자열에 알파벳 대문자가 몇 개 있는지 알아내는 프로그램 을 작성하세요.

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

출력설명
첫 줄에 대문자의 개수를 출력한다.

▣ 입출력 예

inputoutput
KoreaTimeGood3
JavaScript2

풀이

const findUppercase = (str) => {
  let count = 0;
  for (let x of str) {
    if (x === x.toUpperCase()) count++;
    // console.log(x.toUpperCase(), x); 
  }
  return count;
};
const str = 'KoreaTimeGood';
console.log(findUppercase(str)); // 3
  • 📌 toUpperCase() - MDN
  • toUpperCase()는 x 문자 자체를 변경하지는 않는다. 대문자를 반환받을 뿐이므로 비교가 가능!

✍️ solution

  • 📌 +) 아스키 코드로 푸는 방법
const solution = (str) => {
  let answer = 0;
  for (let x of str) {
    let num = x.charCodeAt(); 
    if (num >= 65 && num <= 90) answer++;
  }
  return answer;
};
const str = 'JavaScript';
console.log(solution(str));






2. 대문자로 통일

문제 설명

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

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

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

▣ 입출력 예

inputoutput
ItisTimeToStudyITISTIMETOSTUDY
JavaScriptJAVASCRIPT

풀이

const makeUpperCase = (str) => {
  const answer = str.toUpperCase();
  return answer;
};
const str = 'ItisTimeToStudy';
console.log(makeUpperCase(str)); // ITISTIMETOSTUDY

✍️ solution

  • 📌 +) 다른 풀이
const solution = (s) => {
  let answer = '';
  for (let x of s) {
    if (x === x.toLowerCase()) answer += x.toUpperCase();
    else answer += x;
  }
  return answer;
};
const str = 'ItisTimeToStudy';
console.log(solution(str));
// 아스키 코드를 사용한 방법
const solution = (s) => {
  let answer = '';
  for (let x of s) {
    let num = x.charCodeAt();
    if (num >= 97 && num <= 122) answer += String.fromCharCode(num - 32);
    else answer += x;
  }
  return answer;
};
const str = 'ItisTimeToStudy';
console.log(solution(str));






3. 대소문자 변환

문제 설명

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

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

출력설명
첫 줄에 대문자는 소문자로, 소문자는 대문자로 변환된 문자열을 출력합니다.

▣ 입출력 예

inputoutput
StuDYsTUdy
JavaScriptjAVAsCRIPT

풀이

const changeStr = (str) => {
  let answer = '';
  for (let x of str) {
    let changedStr = x.charCodeAt();
    if (changedStr >= 97) {
      console.log(changedStr);
      answer += x.toUpperCase();
    } else {
      answer += x.toLowerCase();
    }
  }
  return answer;
};
const str = 'StuDY';
console.log(changeStr(str));

✍️ 다른풀이

const changeStr = (str) => {
        let answer = '';
        for (x of str) {
          if (x === x.toUpperCase()) {
            answer += x.toLowerCase();
          } else {
            answer += x.toUpperCase();
          }
        }
        return answer;
      };

      const str = 'StuDY';
      console.log(changeStr(str));






4. 가장 긴 문자열

문제 설명
N개의 문자열이 입력되면 그 중 가장 긴 문자열을 출력하는 프로그램을 작성하세요.

입력설명
첫 줄에 자연수 N이 주어진다.(3<=N<=30) 두 번째 줄부터 N개의 문자열이 주어진다. 문자열의 길이는 100을 넘지 않습니다. 각 문자열의 길이는 서로 다릅니다.

출력설명
첫 줄에 가장 긴 문자열을 출력한다.

▣ 입출력 예

inputoutput
5 teacher time student beautiful goodbeautiful

풀이

const longestStr = (str) => {
  let a = 0;
  let answer = '';
  for (let i = 0; i < str.length; i++) {
    if (a < str[i].length) {
      a = str[i].length;
      answer = str[i];
    }
  }
  return answer;
};

const str = ['teacher', 'time', 'student', 'beautiful', 'good'];
console.log(longestStr(str)); // beautiful

📌 for of 로 풀어보기

const longestStr = (str) => {
  let a = 0;
  let answer = '';
  for (x of str) {
    if (a < x.length) {
      a = x.length;
      answer = x;
    }
  }
  return answer;
};

const str = ['teacher', 'time', 'student', 'beautiful', 'good'];
console.log(longestStr(str));

✍️ solution

function solution(s) {
  let answer = '',
    max = Number.MIN_SAFE_INTEGER;
  for (let x of s) {
    if (x.length > max) {
      max = x.length;
      answer = x;
    }
  }
  return answer;
}
let str = ['teacher', 'time', 'student', 'beautiful', 'good'];
console.log(solution(str));
profile
기억보단 기록을 ✨

0개의 댓글