[코딩테스트] 프로그래머스 문제 모음

2022. 10. 11. 09:40·개발/알고리즘
728x90
반응형

1. 양꼬치

 

프로그래머스

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

programmers.co.kr

function solution(n, k) {
    k = k - Math.floor(n/10)
    return 12000*n + 2000*k
}

2. 369게임

 

프로그래머스

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

programmers.co.kr

function solution(order) {
    return order.toString().split("").filter((el)=>el==3||el==6||el==9).length
}

3. 완주하지 못한 선수

 

프로그래머스

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

programmers.co.kr

function solution(participant, completion) {
    participant.sort()
    completion.sort()
    for(let i = 0 ;i<participant.length; i++){
        if(participant[i] !== completion[i]) return participant[i]
    }
}

4. 문자열 내 마음대로 정렬하기

 

프로그래머스

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

programmers.co.kr

function solution(strings, n) {
    return strings.sort().sort((a,b)=> {
        if(a[n]>b[n]) return 1
        else if(a[n]==b[n]) return 0
        else return -1
    })
}

5. 유한소수 판별하기

 

프로그래머스

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

programmers.co.kr

function solution(a, b) {
    let maxD = a
    let [c,d] = a>b ? [a,b] : [b,a]
    for(let r;r=c%d;c=d,d=r){maxD = r}
    b = b/maxD
    while(true){
        if(b<=1) return 1
        if(b%2 && b%5) return 2
        if(b%2==0) b= b/2
        if(b%5==0) b= b/5
    }
}

다른 사람 풀이 본 후

function solution(a, b) {
  return Number((a / b).toFixed(10)) == a / b ? 1 : 2;
}

6. 두개 뽑아서 더하기

 

프로그래머스

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

programmers.co.kr

function solution(numbers) {
    var answer = [];
    for(let i = 0 ; i<numbers.length; i++){
        for(let k = i+1; k<numbers.length; k++){
            if(answer.indexOf(numbers[i] + numbers[k]) == -1) {
                answer.push(numbers[i] + numbers[k])
            }
        }
    }
    return answer.sort((a,b)=>a-b);
}

다른 사람 풀이 본후

function solution(numbers) {
  const temp = [];

  for (let i = 0; i < numbers.length; i++) {
    for (let j = i + 1; j < numbers.length; j++) {
      temp.push(numbers[i] + numbers[j]);
    }
  }

  const answer = [...new Set(temp)];

  return answer.sort((a, b) => a - b);
}

new Set으로 객체를 만들어 배열의 중복을 제거 할수 있다.

중복 제거 후 배열의 형태로 다시 변환해 줘야 한다.

7. 연속된 수의 합

 

프로그래머스

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

programmers.co.kr

function solution(num, total) {
    let answer = [];
    if(total%num == 0){
        answer.push(total/num)
        for(let i = 1; i<num/2; i++){
            answer.unshift(total/num-i)
            answer.push(total/num+i)
        }
    }else{
        for(let i = 1; i<=num/2; i++){
            answer.unshift(Math.ceil(total/num-i))
            answer.push(Math.ceil(total/num+i)-1)
        }
    }
    return answer
}

다른 사람 풀이 본 후 

function solution(num, total) {
  var min = Math.ceil(total / num - Math.floor(num / 2));
  var max = Math.floor(total / num + Math.floor(num / 2));

  return new Array(max - min + 1).fill(0).map((el, i) => {
    return i + min;
  });
}

new Array(배열길이).fill(0으로 채우기)

8. 최빈값 구하기

 

프로그래머스

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

programmers.co.kr

function solution(array) {
  let obj = {};
  for (let i = 0; i < array.length; i++) {
    obj[array[i]] = (obj[array[i]] || 0) + 1
  }
  const answer = Object.keys(obj).sort((a, b) => obj[b] - obj[a]);
  return obj[answer[0]] == obj[answer[1]] ? -1 : +answer[0];
}

다른사람 풀이 본 후 

function solution(array) {
  let m = new Map();
  for (let n of array) m.set(n, (m.get(n) || 0) + 1);
  m = [...m].sort((a, b) => b[1] - a[1]);
  return m.length === 1 || m[0][1] > m[1][1] ? m[0][0] : -1;
}

Map으로 객체 만들기

9. 다항식 더하기 

 

프로그래머스

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

programmers.co.kr

function solution(polynomial) {
  let coefficient = 0;
  let constant = 0;
  polynomial = polynomial.split(" + ");
  for (let i = 0; i < polynomial.length; i++) {
    if (polynomial[i].includes("x"))
      coefficient += parseInt(polynomial[i]) || 1;
    else constant += +polynomial[i];
  }
  if (coefficient == 1) coefficient = "";
  const answer = [coefficient + "x", constant.toString()];
  return answer.filter((v) => v[0] != 0).join(" + ");
}

다른사람 풀이 본 후 배운부분

var [x, c] = p.split("+").reduce(
    ([a, b], s) => {
      if (s.includes("x")) {
        return [a + Number(s.trim().replace("x", "") || 1), b];
      }
      return [a, b + Number(s)];
    },
    [0, 0]
  );

reduce에 배열을 넣을 생각을 못했는데 이 풀이를 보고 알았다.

10. 소수 찾기

 

프로그래머스

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

programmers.co.kr

function solution(n) {
  var answer = 0;
  for (let i = 3; i <= n; i += 2) {
    let num = true;
    for (let k = 2; k <= Math.sqrt(i); k++) {
      if (i % k == 0) {
        num = false;
        break;
      }
    }
    if (num) answer += 1;
  }
  if (n >= 2) answer += 1;
  return answer;
}

짝수는 2로 나누어 떨어지므로 2를 제외한 짝수는 소수가 아니기 때문에 반복문에서 제외

11. 모의고사

 

프로그래머스

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

programmers.co.kr

function solution(answers) {
  const length = answers.length;
  let a = "12345".repeat(Math.ceil(length / 5));
  let b = "21232425".repeat(Math.ceil(length / 8));
  let c = "3311224455".repeat(Math.ceil(length / 10));
  let answer = [0, 0, 0];
  for (let i = 0; i < answers.length; i++) {
    if (answers[i] == +a[i]) answer[0] += 1;
    if (answers[i] == +b[i]) answer[1] += 1;
    if (answers[i] == +c[i]) answer[2] += 1;
  }
  const max = Math.max(...answer);
  return answer
    .map((v, index) => [v, index + 1])
    .filter((v) => v[0] == max)
    .map((v) => v[1]);
}

12. 포켓몬

 

프로그래머스

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

programmers.co.kr

function solution(nums) {
  return Math.min([...new Set(nums)].length, nums.length / 2);
}

13. 로또 최고순위와 최저순위

 

프로그래머스

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

programmers.co.kr

function solution(lottos, win_nums) {
  const correct = lottos.filter((v) => win_nums.includes(v)).length;
  const mistery = lottos.filter((v) => !v).length;
  const high = Math.min(6, 7 - correct - mistery);
  const low = Math.min(6, 7 - correct);
  return [high, low];
}

14. 소수만들기

function solution(nums) {
  let plus = [];
  let answer = 0;
  for (let i = 0; i < nums.length - 2; i++) {
    for (let k = i + 1; k < nums.length - 1; k++) {
      for (let j = k + 1; j < nums.length; j++) {
        plus.push(nums[i] + nums[k] + nums[j]);
      }
    }
  }
  for (let i = 0; i < plus.length; i++) {
    let sosu = true;
    if (plus[i] % 2 == 0) continue;
    for (let k = 3; k <= Math.sqrt(plus[i]); k += 2) {
      if (plus[i] % k == 0) {
        sosu = false;
        break;
      }
    }
    if (sosu) answer += 1;
  }
  return answer;
}

 

728x90
반응형

'개발 > 알고리즘' 카테고리의 다른 글

[알고리즘] 알고리즘 문제 풀이 순서  (0) 2022.11.02
[코딩테스트] 프로그래머스 문제모음  (0) 2022.11.02
[코딩테스트] 프로그래머스 문제  (0) 2022.09.29
[BigO] 객체와 배열  (1) 2022.09.29
[코딩테스트] 프로그래머스 문제 모음  (0) 2022.09.28
'개발/알고리즘' 카테고리의 다른 글
  • [알고리즘] 알고리즘 문제 풀이 순서
  • [코딩테스트] 프로그래머스 문제모음
  • [코딩테스트] 프로그래머스 문제
  • [BigO] 객체와 배열
TeTedo.
TeTedo.
  • TeTedo.
    TeTedo 개발 일기
    TeTedo.
  • 전체
    오늘
    어제
    • 분류 전체보기 (319)
      • 개발 (274)
        • Article (4)
        • 정리 (21)
        • Spring Boot (17)
        • JPA (2)
        • JAVA (6)
        • Database (4)
        • 자료구조 (11)
        • 알고리즘 (32)
        • React (20)
        • Docker (10)
        • node.js (18)
        • Devops (11)
        • Linux (4)
        • TypeScript (3)
        • Go (10)
        • HyperLedger (4)
        • BlockChain (43)
        • html, css, js (48)
        • CS (3)
        • AWS (3)
      • 모아두고 나중에 쓰기 (3)
      • 팀프로젝트 (18)
        • SNS(키보드워리어) (9)
        • close_sea (9)
      • 개인프로젝트 (1)
        • Around Flavor (1)
        • CHAM (13)
        • ethFruitShop (5)
      • 독서 (0)
        • 스프링부트와 AWS로 혼자 구현하는 웹 서비스 (0)
  • 블로그 메뉴

    • 홈
    • 개발일기
    • CS
    • 실습
    • 코딩테스트
    • 웹
    • Go
    • node.js
    • 팀플
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    nodejs
    CSS
    html
    명령어
    node
    ERC721
    go
    하이퍼레저
    React
    node.js
    30일 챌린지
    js
    go언어
    프로그래머스
    컨테이너
    mysql
    도커
    30일챌린지
    erc20
    블록체인
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
TeTedo.
[코딩테스트] 프로그래머스 문제 모음
상단으로

티스토리툴바