가이버2
개발 블로그
가이버2
전체 방문자
오늘
어제
  • 분류 전체보기 (172)
    • 교육 (115)
      • 백엔드 (14)
      • 프론트 (2)
      • 네트워크 관련 (4)
      • 데이터 관련 (3)
      • devops (3)
      • 그외 (3)
      • 알고리즘 (5)
      • 코테 (81)
    • 디버깅 (3)
      • 스프링 Data JPA (3)
      • JAVA (0)
    • 개발 편의 (8)
    • 기계 (25)
      • NAS (10)
      • ROUTER (0)
      • 맥북 (15)
    • 소프트웨어 (17)
      • WIN (4)
      • MAC (13)
      • LINUX (0)
    • 생활 (0)
      • 구매 (0)
      • 오월이 (0)
    • 링크 (3)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • naelonambul 개발 블로그 입니다.

인기 글

태그

  • 맥미니
  • SQL
  • 스프링
  • Spring
  • 맥북
  • M1
  • Java
  • intellij
  • 코딩테스트
  • WSL
  • JS
  • M4
  • 윈도우
  • 프로그래머스
  • SSD
  • 시놀로지
  • 맥
  • 인프런
  • 가상화
  • ARM

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
가이버2

개발 블로그

교육/코테

[프로그래머스]JAVA 기능개발

2022. 7. 1. 17:05

링크 : https://programmers.co.kr/learn/courses/30/lessons/42586

 

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

프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는

programmers.co.kr

import java.util.*;
import java.util.List;

class Solution {
    public int[] solution(int[] progresses, int[] speeds) {
        int[] answer = {};

        List<Integer> answers = new ArrayList<>();
        List<Work> works = new ArrayList<>();
        
        //세팅
        for(int i=0; i< progresses.length; i++){
            works.add(new Work(progresses[i], speeds[i]));
        }

        //루프
        while(works.size() > 0){
            // 임시 완료 리스트
            List<Work> finished = new ArrayList<>();
            works.stream().forEachOrdered(Work::doWork);

            Iterator<Work> iterator = works.iterator();
            //루프
            while(iterator.hasNext()){
                Work now = iterator.next();
                //첫 작업 확인
                if(now.checkFinish()){
                    finished.add(now);
                    iterator.remove();
                }else //순차 확인후 루프 중단
                    break;
            }
            
            //완료 작업수 추가
            int finishedSize =finished.size();
            if(finishedSize > 0){
                    answers.add(finishedSize);
            }
        }
        answer = answers.stream().mapToInt(v->v).toArray();
        return answer;
    }
    
    public class Work{
        int progress;
        int speed;

    public Work(int progress, int speed) {
        this.progress = progress;
        this.speed = speed;
    }

    public int doWork(){
        if(!checkFinish()) {
            progress += speed;
        }
        return progress;
    }

    public boolean checkFinish(){
        return progress >= 100;
    }

    @Override
    public String toString() {
        return "\n Work{" +
                "progress=" + progress +
                ", speed=" + speed +
                '}';
    }
    }
}

'교육 > 코테' 카테고리의 다른 글

[프로그래머스]SQL 입양 시각 구하기(1)  (0) 2022.07.03
[프로그래머스]JAVA 더 맵게 -힙  (0) 2022.07.01
[프로그래머스]JAVA 124 나라의 숫자  (1) 2022.07.01
[프로그래머스]JAVA 행렬 테두리 회전하기  (0) 2022.06.30
[프로그래머스]JAVA 로또의 최고 순위와 최저 순위  (0) 2022.06.29
    '교육/코테' 카테고리의 다른 글
    • [프로그래머스]SQL 입양 시각 구하기(1)
    • [프로그래머스]JAVA 더 맵게 -힙
    • [프로그래머스]JAVA 124 나라의 숫자
    • [프로그래머스]JAVA 행렬 테두리 회전하기
    가이버2
    가이버2
    개인 개발 블로그 입니다.

    티스토리툴바