jiho_bae
Go devlog
jiho_bae
전체 방문자
오늘
어제
  • 분류 전체보기 (158)
    • JavaScript (38)
      • theory (34)
      • vanilla (4)
    • HTML & CSS (2)
    • Browser (3)
    • CS (6)
      • linux (1)
      • shell (2)
      • compiler (2)
    • DS & Algorithm (87)
      • theory (5)
      • basic (7)
      • programmers (30)
      • baekjoon (45)
    • Design Pattern (2)
    • Error (4)
    • Git & Github (4)
    • Tools (1)
    • 부트캠프 (4)
    • Small Tips (2)
    • Java (3)
    • test (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • safari invalid date error
  • 1753 최단경로 javascript
  • JavaScript
  • 억억단을 외우자 javascript
  • 자바스크립트 sort는 왜 그모양일까
  • fetch 취소하기
  • 자바스크립트 채팅방 스크롤
  • 프로그래머스 숫자카드나누기 javascript
  • 병합정렬 자바스크립트
  • 자바스크립트 배열의 특수함
  • 외벽 점검 javascript
  • 대충만든자판 javascript
  • 카카오 코딩테스트 양궁대회 nodeJS
  • 깃 이전 커밋에서 새 브랜치 만들기
  • 자바스크립트 이벤트 위임
  • 덧칠하기 javascript
  • 퀵정렬 자바스크립트
  • 25632 소수 부르기 게임
  • safari Date format NaN
  • 리코쳇 로봇 javascript
  • 리액트 프로젝트 디버깅하기
  • 자바스크립트 비동기 마이크로 태스크 큐와 렌더링 과정
  • 가사 검색 자바스크립트
  • 13460 javascript nodejs
  • 백준 17406 nodeJS
  • javascript use strict
  • 자바스크립트 커링
  • 백준 자바스크립트 입력 템플릿
  • 계수정렬 자바스크립트
  • 자바스크립트 모듈 시스템

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
jiho_bae

Go devlog

DS & Algorithm/basic

[기초 알고리즘] 등수 구하기 - 자바스크립트

2021. 4. 8. 13:07

문제

N(1 <= N <= 100)명 학생의 국어 점수가 입력되면 각 학생의 등수를 입력된 순서대로 출력하는 프로그램을 작성하라.

설명

국어 점수를 의미하는 N개 정수가 배열로 입력된다. 같은 점수가 입력될 경우엔 높은 등수로 동일 처리한다.
즉 가장 높은 점수가 92점인데, 92점이 3명 존재하면 1등이 3명이고 그 다음 점수는 4등이 된다.

나의 풀이

      function solution(arr) {
        const answer = [1, 1, 1, 1, 1];
        const len = arr.length;

        for (let i = 0; i < len; i++) {
          for (let j = 0; j < len; j++) {
            if (arr[j] > arr[i]) answer[i]++;
          }
        }
        return answer;
      }

      let arr = [95, 84, 95, 100, 76];
      console.log(solution(arr));
  • arr는 다음과 같이 [95, 84, 95, 100, 76] 이라는 정수로 이루어져 있다.
  • answer 배열을 선언해주고, 각 값에 등수를 의미하는 1을 모두 넣어준다.
  • 2중 for문을 돌면서, 인덱스i에 위치한 값보다 인덱스j에 위치한 값이 크다면 answer의 인덱스i 값을 1씩 늘려주면 된다.
    • arr[i] === arr[j] 라면 answer[i] 의 값 증가가 이루어지지 않는다.
    • 그러므로 자연스럽게 최고 점수인 92점이 3명이라면 모두 1등이 된다.

 

추가 이론) Array.from

 

만약 입력 배열 arr가 50의 크기를 가진다면?

const answer = [1,1,1,1,1,1,1,1,1,........,1]; 다음과 같이 1을 50번 넣어줘야 한다.
이 때, Array.from을 이용할 수 있다.

 

 

    let arr = [87, 89, 92, 100, 76, 25];

    const len = arr.length;            // 6
    const answer = Array.from({length : len}, () => 1);            //[1, 1, 1, 1, 1, 1]
  • 다음과 같이 배열의 크기 정보를 가지고, 원하는 초기 값을 넣어줄 수 있다.
  • 참고 : Array.from
저작자표시

'DS & Algorithm > basic' 카테고리의 다른 글

[기초 알고리즘] 멘토링 - 자바스크립트  (0) 2021.04.18
[기초 알고리즘] 가장 짧은 문자거리 - 자바스크립트  (0) 2021.04.16
[기초 알고리즘] 봉우리 - 자바스크립트  (0) 2021.04.08
[기초 알고리즘] 최솟값 구하기 - 자바스크립트  (0) 2021.04.07
[기초 알고리즘] 삼각형 판별하기 - 자바스크립트  (0) 2021.04.07
    'DS & Algorithm/basic' 카테고리의 다른 글
    • [기초 알고리즘] 가장 짧은 문자거리 - 자바스크립트
    • [기초 알고리즘] 봉우리 - 자바스크립트
    • [기초 알고리즘] 최솟값 구하기 - 자바스크립트
    • [기초 알고리즘] 삼각형 판별하기 - 자바스크립트
    jiho_bae
    jiho_bae
    하루에 한 걸음씩

    티스토리툴바