BaGyun
빠균's 개발노트
BaGyun
전체 방문자
오늘
어제
  • 분류 전체보기 (71)
    • Today I Learned (44)
      • 오류 (8)
      • JavaScript (15)
      • TypeScript (9)
      • NodeJS (0)
      • NestJS (0)
      • Database (3)
      • ORM (1)
      • 알고리즘 (2)
      • 개인공부 (4)
      • Deploy (0)
      • Git (1)
    • 개인프로젝트 (4)
    • 알고리즘 (14)
      • 프로그래머스 (14)
    • 면접질문 (5)
    • 회고 (3)

인기 글

반응형

블로그 메뉴

  • 홈
  • 태그
  • 방명록
hELLO · Designed By 정상우.
BaGyun

빠균's 개발노트

알고리즘/프로그래머스

[프로그래머스] 모의고사

2022. 7. 29. 00:48
 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

나의 풀이

function solution(answers) {
    var answer = [];
    let one = [1, 2, 3, 4, 5]
    let two = [2, 1, 2, 3, 2, 4, 2, 5]
    let three = [3, 3, 1, 1, 2, 2, 4, 4, 5 ,5]
    let onecount = 0;
    let twocount = 0;
    let threecount = 0;
    for(i=0; i<answers.length; i++){
        one = [...one, one[i]]
        two = [...two, two[i]]
        three = [...three, three[i]]
        if(answers[i]===one[i]){
            onecount += 1
        }
        if(answers[i]===two[i]){
            twocount += 1
        }
        if(answers[i]===three[i]){
            threecount += 1
        }
    }
    
    var max = Math.max(onecount, twocount, threecount);

    if (onecount === max) answer.push(1);
    if (twocount === max) answer.push(2);
    if (threecount === max) answer.push(3);
    
    return answer;
}

접근 방식

문제의 예시처럼 1,2,3이 반복되는 숫자를 미리 배열에 적어두고, 반복되는 숫자를 answers의 길이만큼 뒤에 계속 붙여주는 식으로 만들었고, answers[i]의 값과 비교한 뒤 같다면 카운트 해주는 변수를 하나씩 만들었다.

마지막에 제일 높은 숫자를 찾기위해 Math.max를 사용했고, 오름차순으로 정리하라는 제한 조건을 읽고

1,2,3 순서대로 비교해서 빈배열에 push해주는 방식으로 문제를 해결했다.

베스트 풀이

function solution(answers) {
    var answer = [];
    var a1 = [1, 2, 3, 4, 5];
    var a2 = [2, 1, 2, 3, 2, 4, 2, 5]
    var a3 = [ 3, 3, 1, 1, 2, 2, 4, 4, 5, 5];

    var a1c = answers.filter((a,i)=> a === a1[i%a1.length]).length;
    var a2c = answers.filter((a,i)=> a === a2[i%a2.length]).length;
    var a3c = answers.filter((a,i)=> a === a3[i%a3.length]).length;
    var max = Math.max(a1c,a2c,a3c);

    if (a1c === max) {answer.push(1)};
    if (a2c === max) {answer.push(2)};
    if (a3c === max) {answer.push(3)};


    return answer;
}

filter로 확인할 수 있는 방법도 있다는걸 알게됬고, 마지막 구문은 거의 비슷해서 그래도 잘 풀었구나 싶었다.

'알고리즘 > 프로그래머스' 카테고리의 다른 글

[프로그래머스] 약수의 개수와 덧셈  (0) 2022.07.29
[프로그래머스] 실패율  (0) 2022.07.29
[프로그래머스] 폰켓몬  (0) 2022.07.28
[프로그래머스] 소수 만들기  (0) 2022.07.28
[프로그래머스] 오픈채팅방  (0) 2022.07.28
    '알고리즘/프로그래머스' 카테고리의 다른 글
    • [프로그래머스] 약수의 개수와 덧셈
    • [프로그래머스] 실패율
    • [프로그래머스] 폰켓몬
    • [프로그래머스] 소수 만들기
    BaGyun
    BaGyun

    티스토리툴바