항해99 2주차(알고리즘)

jooooo·2021년 11월 8일
0
post-thumbnail

오늘은

모기때문에 5시에 기상
모기 잡다가 6시 20분에 운동
8시 30분 아침식사
9시 게더 입장

오늘부터 알고리즘 공부가 시작된다.
새로운 팀에 배정되었고 달리기반과 걷기반으로 나뉘어 공부를 진행하게 되었다.
일단 1~4 알고리즘 문제를 푼뒤 만나서 코드리뷰하며 코드를 공유하기로 하였고,
그 이후에는 5~8까지 풀고 코드리뷰를 하고 하루를 마무리하기로 하였다.

1.직사각형 별찍기

  • 문제 설명
    이 문제에는 표준 입력으로 두 개의 정수 n과 m이 주어집니다.
    별(*) 문자를 이용해 가로의 길이가 n, 세로의 길이가 m인 직사각형 형태를 출력해보세요.
  • 제한 조건
    n과 m은 각각 1000 이하인 자연수입니다.
    예시
  • 입력
    5 3
  • 출력
    ★★★★★
    ★★★★★
    ★★★★★

내가 쓴 코드

process.stdin.setEncoding('utf8');
process.stdin.on('data', data => {
    const n = data.split(" ");
    const a = Number(n[0]), b = Number(n[1]);
    
    let result = "";
    for (let i = 0; i<b; i++){			
        for(let j = 0; j<a; j++){
            result += "*";
        }
        result += "\n";
    }
    console.log(result);
});

2.짝수와 홀수

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

내가 쓴 코드

function solution(num) {
    var answer = '';
    if( num % 2 == 0){
        answer = "Even";
    }else{
        answer = "Odd"
    }
    return answer;
}

3.가운데 글자 가져오기

  • 문제 설명
    단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요. 단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다.
  • 제한사항
    s는 길이가 1 이상, 100이하인 스트링입니다.
  • 입출력 예
    s return
    "abcde" "c"
    "qwer" "we"

내가 쓴 코드

function solution(s) {
    var answer = '';
    if(s.length % 2 == 0){
        answer = s[s.length/2-1]+s[s.length/2];
    }else{
        answer = s[s.length/2-0.5];
    }
    return answer;
}

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의 대소관계는 정해져있지 않습니다.
  • 입출력 예
    a b return
    3 5 12
    3 3 3
    5 3 12

내가 쓴 코드

function solution(a, b) {
    var answer = 0;
    for(let i = Math.min(a,b); i <= Math.max(a,b); i++){
        answer += i;
    }
    return answer;
}

5.문자열을 정수로 바꾸기

  • 문제 설명
    문자열 s를 숫자로 변환한 결과를 반환하는 함수, solution을 완성하세요.
  • 제한 조건
    s의 길이는 1 이상 5이하입니다.
    s의 맨앞에는 부호(+, -)가 올 수 있습니다.
    s는 부호와 숫자로만 이루어져있습니다.
    s는 "0"으로 시작하지 않습니다.
  • 입출력 예
    예를들어 str이 "1234"이면 1234를 반환하고, "-1234"이면 -1234를 반환하면 됩니다.
    str은 부호(+,-)와 숫자로만 구성되어 있고, 잘못된 값이 입력되는 경우는 없습니다.

내가 쓴 코드

function solution(s) {
    return Number(s);
}

6. 없는 숫자 더하기

  • 문제 설명
    0부터 9까지의 숫자 중 일부가 들어있는 배열 numbers가 매개변수로 주어집니다. numbers에서 찾을 수 없는 0부터 9까지의 숫자를 모두 찾아 더한 수를 return 하도록 solution 함수를 완성해주세요.
  • 제한사항
    1 ≤ numbers의 길이 ≤ 9
    0 ≤ numbers의 모든 수 ≤ 9
    numbers의 모든 수는 서로 다릅니다.
  • 입출력 예
    numbers result
    [1,2,3,4,6,7,8,0] 14
    [5,8,4,0,6,7,9] 6
  • 입출력 예 설명
  • 입출력 예 #1
    5, 9가 numbers에 없으므로, 5 + 9 = 14를 return 해야 합니다.
  • 입출력 예 #2
    1, 2, 3이 numbers에 없으므로, 1 + 2 + 3 = 6을 return 해야 합니다.

내가 쓴 코드

function solution(numbers) {
    let answer = 0;
    for(let i = 0; i <=9; i++){
        answer += i;
    } for(let number of numbers){
        answer -= number;
    }
    return answer;
}

7. 음양 더하기

  • 문제 설명
    어떤 정수들이 있습니다. 이 정수들의 절댓값을 차례대로 담은 정수 배열 absolutes와 이 정수들의 부호를 차례대로 담은 불리언 배열 signs가 매개변수로 주어집니다. 실제 정수들의 합을 구하여 return 하도록 solution 함수를 완성해주세요.
  • 제한사항
    absolutes의 길이는 1 이상 1,000 이하입니다.
    absolutes의 모든 수는 각각 1 이상 1,000 이하입니다.
    signs의 길이는 absolutes의 길이와 같습니다.
    signs[i] 가 참이면 absolutes[i] 의 실제 정수가 양수임을, 그렇지 않으면 음수임을 의미합니다.
  • 입출력 예
    absolutes signs result
    [4,7,12][true,false,true] 9
    [1,2,3][false,false,true] 0
  • 입출력 예 설명
  • 입출력 예 #1
    signs가 [true,false,true] 이므로, 실제 수들의 값은 각각 4, -7, 12입니다.
    따라서 세 수의 합인 9를 return 해야 합니다.
  • 입출력 예 #2
    signs가 [false,false,true] 이므로, 실제 수들의 값은 각각 -1, -2, 3입니다.
    따라서 세 수의 합인 0을 return 해야 합니다.

내가 쓴 코드

function solution(absolutes, signs) {
    var answer = 0;
    for(let i = 0; i < absolutes.length; i++){  // absolutes의 길이는 0,1,2
        if(signs[i] == true){                   // signs 배열 t,f,t 이므로 0,1,2 
           answer += absolutes[i];              // signs true일 경우에 answer = 0 값에 + absolutes의 배열의 첫 번째
        }else{                                  // 4가 들어간다. 4는 true이므로 answer = 4가 되고 두번째 else에서  
            answer -= absolutes[i];             // true가 아닐경우에는 answer = 4 값에서 absolutes의 두번째 배열인
        }                                       // 7이 flase 값으로 들어간다 그러므로 4-7이되고 answer값은 -3이 된다.
    }                                           // 마지막으로 3번째 배열 14는 true 이므로 answer = -3에 14를 더하게
    return answer;                              // 되고 9가 나오게 된다.
}

8. 평균 구하기

  • 문제 설명
    정수를 담고 있는 배열 arr의 평균값을 return하는 함수, solution을 완성해보세요.
  • 제한사항
    arr은 길이 1 이상, 100 이하인 배열입니다.
    arr의 원소는 -10,000 이상 10,000 이하인 정수입니다.
  • 입출력 예
    arr return
    [1,2,3,4] 2.5
    [5,5] 5

내가 쓴 코드

function solution(arr) {
    var answer = 0;
    for(let i = 0; i<arr.length;i++){
        answer += arr[i];
    }
    return answer = answer/arr.length;
}
profile
INFP🖐

0개의 댓글