developer-ellen
인간 디버거의 로그 찍기
developer-ellen
전체 방문자
오늘
어제
  • 분류 전체보기 (217)
    • 회고록 (0)
    • 취뽀 및 커리어 여정의 Stack (2)
      • SSAFY 7기 (2)
    • 프로그래밍공부 (24)
      • c++ (0)
      • JAVA (3)
      • Spring (5)
      • design pattern (3)
      • BackDB (1)
      • Servlet&JSP (3)
      • Vue (4)
      • JPA (4)
      • Infra (1)
      • Linux (0)
    • AI (3)
      • papers (3)
      • trend (0)
    • 프로젝트진행 (0)
      • 데이터베이스 (0)
      • 서버개발 (0)
      • 인공지능 (0)
      • 하루정리 (0)
    • 포트폴리오 (0)
    • 알고리즘 (158)
      • 알고리즘문풀 (155)
      • 알고리즘공부 (3)
    • 통계공부 (15)
      • 시계열분석 (15)
      • 회귀분석 (0)
    • CS (14)
      • 컴퓨터네트워크 (4)
      • 운영체제 (8)
      • 데이터베이스 (2)
    • 주저리주저리 (0)
      • 필사 (0)
    • 취업관련정보 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • c++디자인패턴
  • 삼성코테파이썬준비
  • 카카오코테
  • 데이터분석
  • 삼성코테준비
  • Arima
  • SW역량테스트파이썬
  • SW역량테스트파이썬풀이
  • 통계분석
  • 운영체제인터럽트
  • 삼성코테기출
  • c++ 빌더 패턴
  • MA모형
  • 시계열분석
  • 카카오코테java풀이
  • 삼성코테기출자바풀이
  • 삼성코테구현문제추천
  • 통계학
  • 코테파이썬
  • ARIMA모형
  • 삼성코테자바준비
  • 삼성코테구현풀이
  • 삼성코테자바풀이
  • BOJ파이썬풀이
  • 백준파이썬풀이
  • 시계열
  • 삼성코테자바꿀팁
  • AR모형
  • 삼성코테파이썬
  • 삼성코테파이썬풀이

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
developer-ellen

인간 디버거의 로그 찍기

알고리즘/알고리즘문풀

프로그래머스 코딩테스트 고득점 Kit - 기능개발 (JAVA)

2022. 7. 8. 23:50

❓ 문제 -프로그래머스 코딩테스트 고득점 Kit 기능개발 - JAVA 풀이법

출처 

(https://school.programmers.co.kr/learn/courses/30/lessons/42586)

 

프로그래머스

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

programmers.co.kr

 

 

 

📝 문제해결법

1. 스택 활용

  • 배포되어야 하는 순서를 반대로 각 기능 진도 100%가 되기 위해 며칠이 걸리는지를 stack에 push  해준다.
  • stack에서 하나씩 꺼내서 현재 기능을 배포할 때 걸리는 일수보다 작은 것이 뒤에 기능에 존재하는지를 체크하여 자신의 일수보다 작거나 같으면 같이 배포 하도록 구현한다.
  • 따라서 while문을 통해 현재 pop한 num보다 작거나 같은 스택의 top을 계속 체크하구 만약 같이 배포할 수 있을 경우 pop을 하며 count를 1증가시켜주면서 같은 시점에 배포할 기능을 카운트 해준다.

2. 느낀점

  • 스택/큐라는 분류를 봐서.. 이미 해결 알고리즘을 생각하고 구현하니깐 쉬운 부분이 있었다.
  • 스택이 이런 방식으로도 해결될 수 있구나... 

 

 

💻 소스코드 

import java.util.*;

class Solution {
    public int[] solution(int[] progresses, int[] speeds) {
        Stack<Integer> stack = new Stack<>();
        
        
        for(int i=progresses.length-1;i>=0;i--){
            int diff = 100 - progresses[i];
            if(diff%speeds[i] > 0){
                stack.push(diff/speeds[i] + 1);
            } else {
                stack.push(diff/speeds[i]);
            }
                
        }
        ArrayList<Integer> list = new ArrayList<Integer>();
        
        while(!stack.isEmpty()){
            int count = 1;
            int num = stack.pop();
            //System.out.println("num "+num);
            while(!stack.isEmpty()){
                int num2 = stack.peek();
                //System.out.println("num2 "+num2);
                if(num < num2){
                    break;
                } else {
                    count++;
                    stack.pop();
                }
            }
            list.add(count);
        }
        
        int[] answer = new int[list.size()];
        
        for(int i=0;i<list.size();i++){
            answer[i] = list.get(i);
        }

        
        return answer;
    }
}

 

'알고리즘 > 알고리즘문풀' 카테고리의 다른 글

BOJ - 거울 설치 2151번 (JAVA)  (0) 2022.07.15
BOJ - 텔레포트3 12908번 (JAVA)  (0) 2022.07.13
BOJ - 열쇠 9328번 (JAVA)  (0) 2022.06.30
2022 KAKAO BLIND RECRUITMENT - 사라지는 발판 (JAVA)  (0) 2022.06.24
2022 KAKAO BLIND RECRUITMENT - 파괴되지 않은 건물 (JAVA)  (0) 2022.06.22
    '알고리즘/알고리즘문풀' 카테고리의 다른 글
    • BOJ - 거울 설치 2151번 (JAVA)
    • BOJ - 텔레포트3 12908번 (JAVA)
    • BOJ - 열쇠 9328번 (JAVA)
    • 2022 KAKAO BLIND RECRUITMENT - 사라지는 발판 (JAVA)
    developer-ellen
    developer-ellen

    티스토리툴바