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

2024. 11. 26. 11:11·코테/Algorithm
728x90
 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

풀이

 

1. Stack을 사용한 이유

맨 끝에 저장되어 있는 값을 뽑아와서 비교하면 O(1)의 시간이 소요되기 때문

 

2. 다른 사람들은 어떻게 코드를 짰는가

작업의 개수가 100개 이하여서, 배열의 길이를 100개만큼 만든 다음 for문 안에서 while문으로 확인해준 코드가 있었다. 그런데 이 경우에는 이중 포문을 사용한거나 다름이 없으니, 작업의 개수가 100개 이하일 때는 O(n^2)이여도 상관이 없지만 작업의 개수가 더 많아질 경우에는 시간복잡도 측면에서 비효율적일 것 같다.

 

나랑 비슷하게 접근해서 큐를 이용한 사람의 코드도 볼 수 있었다. 나는 개수를 cnt++로 계산해줬다면, 이 사람은 선입선출을 통해 더 오래 걸리는 작업이 들어올 경우 이전까지 저장해둔 큐의 size만큼을 배포해줬다.

 

3. Stack관련 문법 및 특징 등

이전에 적어둔 문제를 참고하면 될 것 같다.

 

[프로그래머스] 같은 숫자는 싫어 (JAVA)

프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 풀이 어제 유튜브 알고리즘에 걸린 영상을 보고 난 뒤에 제대로 공부하

dropdew.tistory.com

 

 

전체코드
import java.io.*;
import java.util.*;

class Solution {
    public List<Integer> solution(int[] progresses, int[] speeds) {
        Stack<Integer> stack = new Stack<>();
        List<Integer> answer = new ArrayList<>();
        int cnt = 0;
        for(int i=0; i<progresses.length; i++){
            //배포까지 걸리는 시간 계산
            int day = (100 - progresses[i])/speeds[i];
            if(speeds[i]*day+progresses[i] < 100){
                day += 1;
            }
            if(stack.isEmpty()){
                stack.push(day);
            }else{
                int pre = stack.peek();
                if(pre < day){
                    answer.add(cnt+1);
                    cnt = 0;
                    stack.push(day);
                }else{
                    cnt++;
                    continue;
                }
            }
        }
        answer.add(cnt+1);
        return answer;
    }
}

 

cnt+1을 해주는 이유는, 배포 이후 카운팅을 해줄 때 첫번째 작업을 카운팅하지 않았기 때문이다.

728x90

'코테 > Algorithm' 카테고리의 다른 글

[프로그래머스] 타겟 넘버 (JAVA)  (1) 2024.11.27
[프로그래머스] 올바른 괄호 (JAVA)  (0) 2024.11.26
[프로그래머스] 같은 숫자는 싫어 (JAVA)  (0) 2024.11.26
[프로그래머스] PCCP 모의고사 1번. 외톨이 알파벳 (JAVA)  (0) 2024.11.24
[Programmers] PCCP 기출문제 충돌위험 찾기 (JAVA)  (0) 2024.11.21
'코테/Algorithm' 카테고리의 다른 글
  • [프로그래머스] 타겟 넘버 (JAVA)
  • [프로그래머스] 올바른 괄호 (JAVA)
  • [프로그래머스] 같은 숫자는 싫어 (JAVA)
  • [프로그래머스] PCCP 모의고사 1번. 외톨이 알파벳 (JAVA)
DROPDEW
DROPDEW
💻 Developer | 기록하지 않으면 존재하지 않는다
  • DROPDEW
    제 2장 1막
    DROPDEW
  • 전체
    오늘
    어제
    • Dev (411) N
      • App·Android (1)
      • BE (43) N
        • HTTP 웹 기본 지식 (8)
        • 스프링 입문 - 코드로 배우는 스프링 부트, 웹 .. (12)
        • 스프링부트와 JPA 활용 (10) N
        • 스프링부트 시큐리티 & JWT (0)
        • PHP (6)
      • FE·Client (23)
        • HTML (1)
        • React (19)
        • Unity (1)
      • Data (12)
        • AI (4)
        • Bigdata (6)
        • Database (1)
        • 빅데이터분석기사 (0)
      • Infra (0)
      • Activity (0)
        • Education (0)
        • Intern (0)
        • 리모트 인턴십 6기 (0)
        • 구름톤 유니브 4기 (0)
        • SW교육기부단 15기 (0)
      • CS (8)
      • 취준 (13)
        • 자격증 (4)
        • 인적성·NCS (6)
        • 코테·필기·면접 후기 (3)
      • 코테 (270)
        • Algorithm (222)
        • SQL (35)
        • 정리 (13)
      • 인사이트 (27)
        • 회고 (0)
        • 금융경제뉴스 (7)
        • 금융용어·지식 (2)
        • 북마크 (7)
  • 블로그 메뉴

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    누적합
    다이나믹프로그래밍
    백준
    그래프이론
    그리디알고리즘
    문자열
    브루트포스 알고리즘
    오블완
    자료구조
    그래프탐색
    최단경로
    구현
    시뮬레이션
    티스토리챌린지
    정렬
    매개변수탐색
    수학
    너비우선탐색
    투포인터
    이분탐색
  • 최근 댓글

  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.3
DROPDEW
[프로그래머스] 기능개발 (JAVA)
상단으로

티스토리툴바