[프로그래머스] 42586 기능개발(Lv2) - 배열(스택, 큐)

2024. 6. 28. 23:32·코딩 테스트/자료구조

문제

입출력 예시

코드

  1. (100 - progresses[i]) / speeds[i] (100 - progresses[i]) % speeds[i]를 이용하여 작업 시간을 구한다.
  2. 현재 작업의 종료 시간 >= 다음 작업의 종료 시간이라면 다음 작업을 대기시켰다 현재 작업 배포 시기에 함께 배포해야 하므로 배포되는 기능의 개수인 cnt++
  3. 2에서 현재 작업 시간에 배포되는 기능의 개수를 모두 구했다면 answer 리스트에add()
  4. answer 리스트 반환
import java.util.ArrayList;

class Solution {
    public int[] solution(int[] progresses, int[] speeds) {

		// 1. ---------------------------------------------------------
        // 작업 기간(end) 계산
        int[] end = new int[progresses.length];
        for (int i = 0; i < progresses.length; i++) {
            int intg = (100 - progresses[i]) / speeds[i];
            float flt = (100 - progresses[i]) % speeds[i];

            // 각 작업의 완료 기간 설정
            if (flt == 0) {
                end[i] = intg;
            }
            else {
                end[i] = intg+1;
            }
        }
        
		// 2. ---------------------------------------------------------
        // 기능 배포 개수 계산
        ArrayList<Integer> answer = new ArrayList<>();
        int front = 0;
        while (front < end.length) {
            int cnt = 1;
            /**
            if, 비교 대상 < 배열 크기 && 앞 > 비교 대상
            then, 배포 개수++(자기 자신 + 비교 대상)
            **/

            // 이 부분 for로 했는데 막혀서 gpt 참조함
            // for 반복문 + if 조건문보단 while로 반복과 조건 한번에 하는 게 적절
            while (front + cnt < end.length && end[front] >= end[front + cnt]) {
                cnt++;
            }
            /**
            if, 비교 대상이 더 크다면
            then,
            지금까지 센 cnt를 answer에 삽입
            &&
            자기 자신을 비교 대상으로 전환
            **/
            // 3. ---------------------------------------------------------
            answer.add(cnt);
            front += cnt;
        }

        // 출력을 위해 ArrayList<Integer>를 int[]로 변환
        int[] result = new int[answer.size()];
        for (int j = 0; j < answer.size(); j++) {
            result[j] = answer.get(j);
        }

        return result;
    }
}

결론

스택/큐 문제지만 배열을 이용하여 간단하게 풀 수 있어서 배열을 이용해 풀어봤다.

'코딩 테스트 > 자료구조' 카테고리의 다른 글

[프로그래머스] 42583 다리를 지나는 트럭(Lv2) - 큐  (0) 2024.06.30
[프로그래머스] 42587 프로세스(Lv2) - 큐(우선순위 큐)  (0) 2024.06.29
[프로그래머스] 12906 같은 숫자는 싫어(Lv1)  (0) 2024.06.28
[백준] 1374 강의실(골드5) - 힙(Heap)  (0) 2024.06.28
[백준] 11286 절댓값 힙(실버1) - 힙(Heap), 우선순위 큐(PriorityQueue)  (0) 2024.06.27
'코딩 테스트/자료구조' 카테고리의 다른 글
  • [프로그래머스] 42583 다리를 지나는 트럭(Lv2) - 큐
  • [프로그래머스] 42587 프로세스(Lv2) - 큐(우선순위 큐)
  • [프로그래머스] 12906 같은 숫자는 싫어(Lv1)
  • [백준] 1374 강의실(골드5) - 힙(Heap)
토자맨
토자맨
  • 토자맨
    개발하는 토자맨
    토자맨
  • 전체
    오늘
    어제
    • 개발 공부
      • 코딩 테스트
        • 코드업 기초 100제
        • 백준
        • 99클럽
        • 자료구조
        • 알고리즘
      • Programming Language
        • 자바(JAVA)
      • Back-end
        • Spring
      • Front-end
        • html
        • css
      • DevOps
        • AWS
        • CI CD
        • Docker
        • 홈서버
        • Git
      • Computer Science
        • 자료구조
        • 알고리즘
        • 운영체제
        • OS,Network,DB,DesignPattern
      • 프로젝트
        • 웨이트 쇼핑몰
      • 공부 로드맵
        • 2학년 겨울방학
        • 3학년 2학기
        • 3학년 겨울방학
      • 일상
        • 기타 정보
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    dp #백준 #동적계획법
    bfs #백준
    백준 #아기상어2 #bfs
    프로그래머스 #dp
    티스토리챌린지
    백준 #dp #동적계획법
    bfs #최단거리탐색 #프로그래머스
    99클럽 #코딩테스트 준비 #개발자 취업 #항해99 #til
    git filter-repo
    프로그래머스 #dfs
    bfs #프로그래머스
    nvidia container toolkit #
    백준 #이진탐색 #이분탐색
    오블완
    이진탐색 #이분탐색 #알고리즘
    싱글톤 패턴 #싱글톤 컨테이너 #싱글톤 레지스트리 #싱글톤 객체 상태 #무상태 #stateless #유지상태 #staleful
    dfs #백준
    스프링 #spring #스프링 컨테이너 #스프링 컨텍스트
    이진탐색 #이분탐색 #백준
    백준 #dfs #알고리즘
    백준 #dfs #11725번
    nvidia-docker #docker cuda #docker gpu #엔비디아 도커
    스프링핵심원리 #김영한 #의존관계자동주입 #의존관계 자동 주입
    dfs #알고리즘
    백준 #dfs
    git filter-branch #commit 수정 #commit
    피보나치 수 #백준 #dp
    solid #객체지향설계원칙
    백준 #bfs
    ec2 멈춤 #ec2 터짐 #ec2 ssh 연결 끊김 #ec2 끊김
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
토자맨
[프로그래머스] 42586 기능개발(Lv2) - 배열(스택, 큐)
상단으로

티스토리툴바