[프로그래머스 자바스크립트] 코딩테스트 입문 Day 6,7 풀어보기

2024. 2. 13. 01:15·Algorithm/Programmers(JavaScript)
목차
  1.  
  2. 문자열 뒤집기
  3. 직각삼각형 출력하기
  4. 짝수 홀수 개수
  5. 문자 반복 출력하기
  6. 특정 문자 제거하기
  7. 각도기
  8. 양꼬치
  9.  
  10. 틸트 문법에 대한 설명(by chatGPT)
  11. 짝수의 합

Day 6

 

문자열 뒤집기

https://school.programmers.co.kr/learn/courses/30/lessons/120822

function solution(my_string) {
    
    let answer_string = '';
    
    // my_string의 끝에 있는 문자부터 answer_string에 넣어주기
    for(var i = my_string.length - 1; i >= 0; i--) {
        answer_string += my_string[i];
    }
    
    return answer_string;
}

직각삼각형 출력하기

https://school.programmers.co.kr/learn/courses/30/lessons/120823

const readline = require('readline');
const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});

let input = [];

rl.on('line', function (line) {
    input = line.split(' ');
    
    
}).on('close', function () {
    
    let num = parseInt(input[0]);
    
    
    for(let i = 1; i <= num; i++) {
        let answer_line = '';
        
        for(let j = 1; j <= i; j++) {
            answer_line += '*';
        }
        
        console.log(answer_line);
    }
    
    
});

짝수 홀수 개수

https://school.programmers.co.kr/learn/courses/30/lessons/120824

function solution(num_list) {
    answer = [0, 0];
    for(let i = 0; i < num_list.length; i++) {
        
        // 짝수라면 answer[0]에 1 더해주기
        if(num_list[i] % 2 === 0) {
            answer[0]++;
        }
        
        // 홀수라면 answer[1]에 1 더해주기
        else {
            answer[1]++;
        }
    }
    
    return answer;
}

 

 

filters를 사용할 수도 있다.

function solution(num_list) {
  return [
    num_list.filter((num) => num % 2 === 0).length,
    num_list.filter((num) => num % 2 === 1).length,
  ];
}

문자 반복 출력하기

https://school.programmers.co.kr/learn/courses/30/lessons/120825

function solution(my_string, n) {
    
    let answer = '';
    
    for(let i = 0; i < my_string.length; i++) {
        answer += my_string[i].repeat(n);
    }
    
    return answer;
}

 

 

이렇게 풀 수도 있다.

function solution(my_string, n) {
    var answer = [...my_string].map(v => v.repeat(n)).join("");
    console.log(answer);
    return answer;
}

Day 7

특정 문자 제거하기

https://school.programmers.co.kr/learn/courses/30/lessons/120826

function solution(my_string, letter) {
    answer = '';
    
    for(let i = 0; i < my_string.length; i++) {
        if(my_string[i] !== letter) {
            answer += my_string[i];
        }
    }
    
    return answer;
}

다른 사람 풀이에서 본 split과 join을 이용한 신박한 풀이

function solution(my_string, letter) {
    const answer = my_string.split(letter).join('')
    return answer;
}
  1. my_string을 split(letter)로 나누면 letter를 기준으로 문자열이 배열로 분할된다.
  2. 그 후, join('')을 사용하여 나뉜 배열을 다시 합친다. 이때 ''는 빈 문자열을 나타낸다.
  3. 따라서, letter가 문자열에서 모두 제거된 결과가 answer 변수에 저장되고 반환된다.

아니면 그냥 replaceAll을 써도 된다.

function solution(my_string, letter) {
    return my_string.replaceAll(letter, "");
}

각도기

https://school.programmers.co.kr/learn/courses/30/lessons/120829

function solution(angle) {
    if(angle > 0 && angle < 90) {
        return 1;
    }
    else if (angle === 90 ) {
        return 2;
    }
    else if (angle > 90 && angle < 180) {
        return 3;
    }
    else if (angle === 180) {
        return 4;
    }
}

 

filter를 사용하면 훨씬 편리해진다.

function solution(angle) {
    return [0, 90, 91, 180].filter(x => angle>=x).length;
}

이 코드는 주어진 각도(angle)를 기준으로, 배열 [0, 90, 91, 180]에 있는 값들 중에서 주어진 각도보다 작거나 같은 값의 개수를 반환하는 함수입니다.

 

분석을 해보면:

  1. filter 함수를 사용하여 배열 [0, 90, 91, 180]에서 주어진 각도보다 작거나 같은 값들을 모두 필터링합니다.
  2. filter로 걸러진 배열의 길이를 반환합니다. 이는 주어진 각도보다 작거나 같은 값의 개수를 나타냅니다.

간단한 예시를 통해 설명하겠습니다. 예를 들어, angle이 92이라면, 배열 [0, 90, 91, 180]에서 90, 91은 조건을 만족하므로 이 값들이 남게 됩니다. 따라서, 최종적으로 filter된 배열의 길이는 2가 되어 함수는 2를 반환합니다.

 

삼항연산자를 사용하는 방법

function solution(angle) {
    return angle < 90 ? 1 : angle === 90 ? 2 : angle < 180 ? 3 : 4;
}

양꼬치

https://school.programmers.co.kr/learn/courses/30/lessons/120830

function solution(n, k) {
    let answer = 0;
    
    // answer에 양꼬치 개수 * 12000을 더해준다.
    answer += n * 12000;
    
    // 사람들이 몇 인분을 먹었는지 -> 양꼬치의 개수에서 10을 나눈 몫
    let people_cnt = parseInt(n / 10);
    
    // answer에 음료수 개수에서 사람들이 몇 인분 먹었는지를 빼고 2000을 곱해준다.
    answer += (k-people_cnt) * 2000;
    
    return answer;
    
}

 

틸트 문법으로 풀 수 있다고 한다.

function solution(n, k) {
    k-=~~(n/10);
    if (k < 0) k = 0;
    return n*12000+k*2000;
}

 

이 코드는 두 개의 매개변수 n과 k를 받아서 어떤 계산을 수행한 후 결과값을 반환하는 함수입니다. 코드를 간단히 해석하면 다음과 같습니다:

  1. k에 ~~(n/10)를 빼라: n을 10으로 나눈 몫을 소수점 아래를 버리고 빼라.
  2. k가 0보다 작다면 0으로 만들어라.
  3. n * 12000 + k * 2000의 결과를 반환하라.

간단한 예시를 통해 설명하겠습니다. 예를 들어, n이 30이고 k가 5이라면:

  1. k -= ~~(n/10);: n을 10으로 나눈 몫인 3을 k에서 빼라. 따라서 k는 5 - 3 = 2가 됩니다.
  2. if (k < 0) k = 0;: k가 0보다 작으면 k를 0으로 만들어라. 현재 k는 2이므로 이 조건은 만족하지 않습니다.
  3. return n * 12000 + k * 2000;: 최종적으로 30 * 12000 + 2 * 2000으로 계산되어 결과는 360000입니다.

 

틸트 문법에 대한 설명(by chatGPT)

해당 코드에서 사용된 틸트(~~) 연산자는 비트 연산자를 활용하여 소수점 이하를 버리는 연산을 수행합니다. 틸트 연산자를 사용하는 경우 소수점 아래의 모든 비트를 삭제하고 정수 부분만을 남기게 됩니다. 이것은 Math.floor() 함수와 비슷한 역할을 하지만, 틸트 연산자가 더 빠르게 동작하는 특성이 있습니다.

코드에서의 k-=~~(n/10); 부분을 예로 들어보면:

  1. n을 10으로 나눈 몫을 계산합니다.
  2. 이 몫에 대해 틸트(~~) 연산을 수행하여 소수점 이하를 제거합니다.
  3. k에서 이 값을 빼주어서 결과적으로 k에는 n을 10으로 나눈 몫의 정수 부분이 저장됩니다.

간단한 예제를 통해 설명하겠습니다. 만약 n이 25이면, 25 / 10의 몫은 2.5입니다. 틸트 연산을 적용하면 2가 되므로, 최종적으로 k에서 2를 빼주게 됩니다. 이를 통해 소수점 아래를 버리고 정수 부분만을 사용하게 됩니다.


짝수의 합

https://school.programmers.co.kr/learn/courses/30/lessons/120831

function solution(n) {
    let sum = 0;
    for(let i = 1; i <= n; i++) {
        if(i % 2 == 0) {
            sum += i;
        }
    }
    return sum;
}
저작자표시 비영리 변경금지 (새창열림)

'Algorithm > Programmers(JavaScript)' 카테고리의 다른 글

[프로그래머스 자바스크립트] '폰켓몬' 풀어보기  (2) 2024.07.16
[프로그래머스 자바스크립트] 코딩테스트 입문 Day 9,10 풀어보기  (1) 2024.02.14
[프로그래머스 자바스크립트] 코딩테스트 입문 Day 8 풀어보기  (0) 2024.02.13
[프로그래머스 자바스크립트] 코딩테스트 입문 Day 4,5 풀어보기  (2) 2024.02.10
[프로그래머스 자바스크립트] 코딩테스트 입문 Day 1,2,3 풀어보기  (1) 2024.02.10
  1.  
  2. 문자열 뒤집기
  3. 직각삼각형 출력하기
  4. 짝수 홀수 개수
  5. 문자 반복 출력하기
  6. 특정 문자 제거하기
  7. 각도기
  8. 양꼬치
  9.  
  10. 틸트 문법에 대한 설명(by chatGPT)
  11. 짝수의 합
'Algorithm/Programmers(JavaScript)' 카테고리의 다른 글
  • [프로그래머스 자바스크립트] 코딩테스트 입문 Day 9,10 풀어보기
  • [프로그래머스 자바스크립트] 코딩테스트 입문 Day 8 풀어보기
  • [프로그래머스 자바스크립트] 코딩테스트 입문 Day 4,5 풀어보기
  • [프로그래머스 자바스크립트] 코딩테스트 입문 Day 1,2,3 풀어보기
퀵차분
퀵차분
Web Developer 🥐
QC's DevlogWeb Developer 🥐
  • 퀵차분
    QC's Devlog
    퀵차분
  • 전체
    오늘
    어제
    • 분류 전체보기 (174)
      • Frontend (29)
      • Fedify (4)
      • Study (42)
        • NestJS (2)
        • Node.js (3)
        • Modern JS Deep Dive (13)
        • SQL (1)
        • Network (1)
        • 프롬프트 엔지니어링 (4)
        • 인공지능 (9)
        • 시스템프로그래밍 (11)
        • 선형대수학 (1)
      • Intern (4)
      • KUIT (21)
      • Algorithm (48)
        • Baekjoon(C++) (26)
        • Programmers(JavaScript) (22)
      • 우아한테크코스(프리코스) (4)
      • Project (8)
        • crohasang_page (1)
        • PROlog (4)
        • Nomadcoder (2)
      • 생각 (4)
      • Event (7)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    알고리즘
    오블완
    프로그래머스 자바스크립트
    프로그래머스
    javascript
    타입스크립트
    KUIT
    HTML
    시스템프로그래밍
    인공지능
    리액트
    백준
    next.js
    fedify
    프론트엔드
    typescript
    음악추천
    티스토리챌린지
    react
    자바스크립트
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
퀵차분
[프로그래머스 자바스크립트] 코딩테스트 입문 Day 6,7 풀어보기

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.