ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 항해99 알고리즘 1일 차(1)
    알고리즘 풀이 2021. 11. 8. 21:40

    1.직사각형 별찍기

     

    문제 설명

    이 문제에는 표준 입력으로 두 개의 정수 n과 m이 주어집니다.
    별(*) 문자를 이용해 가로의 길이가 n, 세로의 길이가 m인 직사각형 형태를 출력해보세요.


    제한 조건

    • n과 m은 각각 1000 이하인 자연수입니다.

    예시

    입력

    5 3

    출력

    *****

    *****

    *****

     

     

    문제

    process.stdin.setEncoding('utf8');

    process.stdin.on('data', data => { //입력받은 숫자를 'data에 받는다'

        const n = data.split(" "); // data(입력받은 숫자)를 배열로 변경

        const a = Number(n[0]), b = Number(n[1]); //a는 한줄에대한 별의 갯수, b는 몇줄 출력

        console.log(a);

        console.log(b);

    });

    풀이

    process.stdin.setEncoding('utf8');

    process.stdin.on('data', data => {

        const n = data.split(" ");

        const a = Number(n[0]), b = Number(n[1]);

        for(let i=0; i<b; i++){ //i을 선언해주고 몇줄(b)만큼 반복

            let str = ""; //출력할 변수 선언

            for(let j=0; j<a; j++){ // j선언후 별을 한줄에 몇개 찍을지 반복

                str = str + "*" //출력할 변수에 별을 담는다

            }

        console.log(str) // 출력

        }



    });

     

    2. 짝수와 홀수

    https://jann2codingdiary.tistory.com/8

     

    항해99 2주차 알고리즘 문제 풀이1

    문제 설명 정수 num이 짝수일 경우 "Even"을 반환하고 홀수인 경우 "Odd"를 반환하는 함수, solution을 완성해주세요. 제한 조건 num은 int 범위의 정수입니다. 0은 짝수입니다. 입출력 예 numreturn 3 "Odd" 4 "

    jann2codingdiary.tistory.com

    3. 가운데 글자 가져오기

     

    문제 설명

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

    재한사항

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

    입출력 예

    s return
    "abcde" "c"
    "qwer" "we"

     

    문제

    function solution(s) {

        var answer = ''

     

        return answer;

    }


    풀이

           //a,b,c,d

    index=[0,1,2,3]

     

    function solution(s) {

        var answer = '';

        if (s.length % 2 == 0) { //s의 length를 2로 나눈 값이 0이면(짝수이면)

          //answer값은 s.length를 2로나눈 값에 -1을 해준 값의 인덱스 + s.length를 2로 나눈값의 인덱스

           answer = s[s.length / 2 -1] + s[s.length / 2]

        } else {   //홀수이면

            answer = s[s.length / 2 -0.5]  //answer값은 s.length를 2로 나눈 값에 -0.5를 해준 값의 인덱스

        }

        return answer;

    }

     

     

    다른풀이

    function solution(s) {

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

    }

    // substr()은 문자열에서 특정 부분을 잘라낼 때 쓰인다.

    -> substr(시작위치 , 자를 길이)

    // 시작위치는 Math.ceil(s.length / 2) -1 -> 문자의 길이를 반으로 나눈 후 Math.ceil()로 올림 하고, 1을 뺴준다.

    // 자를 길이는  

    짝수

    -> 문자의 길이를 반으로 나누고 나머지가 0일 때 길이는 2

    홀수

    -> 문자의 길이를 반으로 나누고 나머지가 0일 때 길이는 1

     

    ** 

    Math.floor() : 소수점 이하를 버림한다.
    Math.ceil() : 소수점 이하를 올림한다.
    Math.round() : 소수점 이하를 반올림한다.

    substr(시작위치 , 자를 길이)

     

    4. 두 정수 사이의 합

    문제 설명

    두 정수 a, b가 주어졌을 때 a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수, solution을 완성하세요.
    예를 들어 a = 3, b = 5인 경우, 3 + 4 + 5 = 12이므로 12를 리턴합니다.

    제한 조건

    • a와 b가 같은 경우는 둘 중 아무 수나 리턴하세요.
    • a와 b는 -10,000,000 이상 10,000,000 이하인 정수입니다.
    • a와 b의 대소관계는 정해져있지 않습니다.

    입출력 예

    abreturn

    a b return
    3 5 12
    3 3 3
    5 3 12

     

    문제

    function solution(a, b) {

        var answer = 0;

        return answer;

    }

     

    문제 풀이

    function solution(a, b) {

        var answer = 0;

        if (a < b) { //a가 b보다 작을 때

            for(let i=a; i<=b; i++) { //i는 a부터 b보다 작거나 같을 때까지 +되면서 반복한 값

                answer += i;  //answer = 0+i

            }

        }else if (a > b) { //a가 b보다 클 때

                for(let i=b; i<=a; i++) //i는 b부터 a보다 작거나 같을 때까지 +되면서 반복한 값

                    answer += i; //answer = 0+i

        } else { //a와 b가 같을때

                    answer = a; //answer = a

                }

        return answer;

    }

     

     

    다른풀이

    function adder(a, b){

        var result = 0

        //함수를 완성하세요

       
        //가우스의 공식

    1부터 n까지의 숫자의 합을 구할 때

    n(n+1)/2

      

        return (a+b)*(Math.abs(b-a)+1)/2;

     

     

    ***Math.abs

    주어진 숫자의 절대값.

     

    Math.abs('-1'); // 1

    Math.abs(-2); // 2

    Math.abs(null); // 0

    Math.abs(''); // 0

    Math.abs([]); // 0

    Math.abs([2]); // 2

    Math.abs([1,2]); // NaN

    Math.abs({}); // NaN

    Math.abs('string'); // NaN

    Math.abs(); // NaN

     

    빈 객체, 하나 이상의 요소를 가진 배열, 숫자가 아닌 문자열, undefined나 빈 매개변수를 받으면 NaN을 반환합니다. null, 빈 문자열이나 빈 배열을 제공하면 0을 반환합니다.

Designed by Tistory.