코딩테스트 연습 - 기능개발

 

프로그래머스

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

programmers.co.kr

function solution(progresses, speeds) {
    let days = []; 
    const answer = [];
    for(let i = 0 ; i < progresses.length ; i++) {
        const calc = Math.ceil((100-progresses[i])/(speeds[i]));
        days.push(calc);
        // days.push(Math.round((100-progresses[i])/speeds[i]));
    }
    
    let today = days[0];
    let cnt = 0;
    days.forEach((d) => {
        if(d <= today) {
            cnt++;
        } else {
            answer.push(cnt);
            cnt = 1;
            today = d;
        }
    });
        
    answer.push(cnt);
    
    return answer;
}
728x90

https://school.programmers.co.kr/learn/courses/30/lessons/42587?language=javascript 

 

프로그래머스

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

programmers.co.kr

function solution(priorities, location) {
    // priorities 중요도
    // location 내가 인쇄를 요청한 문서가 현재 대기목록의 어떤 위치에 있는지 알려주는 변수
    // answer 내가 요청한 문서가 몇 번째로 인쇄되는지 return
    
    let printed = 0;
    priorities = priorities.map((p,index) => {
        if(index === location) return {prio: p, target: true};
        return {prio: p, target: false};
    });
        
    while(true) {
        const arr = priorities.map(p => {
            return p.prio;
        });
        let max = Math.max(...arr);
        
        if(priorities[0]['prio'] !== max) {
            let prio = priorities.shift();
            priorities.push(prio);
        } else {
            if(priorities[0]['target'] === true) {
                return ++printed;
            }
            priorities.shift();
            printed++;
        }
    }
}
728x90

https://www.acmicpc.net/problem/1181

 

1181번: 단어 정렬

첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다.

www.acmicpc.net

const fs = require('fs');
const ip = fs.readFileSync('/dev/stdin').toString().split('\n');

const n = Number(ip[0]);
ip.shift();

let input = new Set(ip);
input = Array.from(input);

input.sort(function(a,b) {
    if(a.length !== b.length) return a.length - b.length;
    else {
        return a > b ? 1 : -1;
    }
});

input.forEach((i, index) => {
    console.log(i);
});
728x90

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

 

프로그래머스

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

programmers.co.kr

function solution(s) {
    var answer = [];
    const set = new Set();
    s = s.split("");
    s.shift();
    s.splice(s.length-1, 1);
    s = s.join("");
    s = s.replaceAll('},', " ");
    s = s.replaceAll('{', " ");
    s = s.replaceAll('}', " ");
    s = s.split(" ");
    s = s.filter((v) => v !== '');
    s.sort(function(a,b) {
       return a.length - b.length; 
    });
    
    s.forEach((d) => {
        d = d.split(",");
        d.forEach((data) => {
            set.add(Number(data));
        });
    })
    
    return Array.from(set);
}
728x90

+ Recent posts