99클럽 코테 스터디 8일차 TIL 기능개발

2024. 7. 29. 17:46·스터디/99클럽 코테 스터디 TIL
목차
  1. 📝 문제
  2. 🔥 시도해본 접근 방식
  3. ✨ 성공 코드

📝 문제

 

프로그래머스

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

programmers.co.kr

🔥 시도해본 접근 방식

함수의 인자로 주어지는 progresses를 speeds배열에서 대응 되는 값을 더해가면서,

배포가 가능한 progresses 원소를 제거하고 모두 제거 될때 까지 반복하여

배포 회차별 배포 사이즈 배열을 반환하도록 하는 전략을 세웠다.

 

1. progresses에 모든 원소가 제거될때 까지 반복하는 반복문을 선언한다.

2. 반복문 안에서 작업 속도 speeds에 따라 progresses를 갱신한다.

3. progresses의 첫번째 원소부터 연속적으로 100이상인 원소의 갯수를 카운트 한다.

4. 배포 회차별 배포 사이즈를 기록하고, progresses와 speeds에서 배포된 작업과 작업속도를 제거한다.

5. [2] ~ [4]를 반복한다.

✨ 성공 코드

import java.util.ArrayList;

class Solution {
    public int[] solution(int[] progresses, int[] speeds) {
        // 배포 회차별 배포 사이즈를 담을 리스트 선언한다.
        ArrayList<Integer> answerList = new ArrayList<>();

        // 배포가 된 작업은 progresses에서 지워가면서 모두 배포될 때 까지 반복한다.
        while (progresses.length > 0) {
            // 작업 속도에 따른 작업 진행도 갱신
            for (int i = 0; i < progresses.length; i++) {
                progresses[i] += speeds[i];
            }

            // 배포 가능한 작업 개수를 카운트할 변수 선언한다.
            int cnt = 0;

            // 배포가능한 작업을 카운트한다.
            for (int progress : progresses) {
                if (progress >= 100) {
                    cnt++;
                } else {
                    break;
                }
            }

            // 배포가능한 작업이 있다면 배포처리를 한다.
            if (cnt > 0) {
                // 배포 후 남은 작업들만 추려서 진행도 리스트와 작업속도 리스트를 갱신한다.
                int[] newProgresses = new int[progresses.length - cnt];
                int[] newSpeeds = new int[speeds.length - cnt];

                for (int i = 0; i < progresses.length - cnt; i++) {
                    newProgresses[i] += progresses[i + cnt];
                    newSpeeds[i] += speeds[i + cnt];
                }

                progresses = newProgresses;
                speeds = newSpeeds;

                // 배포 가능한 작업 개수를 응답 리스트에 입력한다.
                answerList.add(cnt);
            }
        }

        return answerList.stream().mapToInt(integer -> integer).toArray();
    }
}

'스터디 > 99클럽 코테 스터디 TIL' 카테고리의 다른 글

99클럽 코테 스터디 10일차 TIL 이중우선순위큐  (0) 2024.08.01
99클럽 코테 스터디 9일차 TIL 더 맵게  (0) 2024.07.31
99클럽 코테 스터디 7일차 TIL 하노이의 탑  (0) 2024.07.29
99클럽 코테 스터디 6일차 TIL 의상  (0) 2024.07.28
99클럽 코테 스터디 5일차 TIL 전화번호 목록  (0) 2024.07.26
  1. 📝 문제
  2. 🔥 시도해본 접근 방식
  3. ✨ 성공 코드
'스터디/99클럽 코테 스터디 TIL' 카테고리의 다른 글
  • 99클럽 코테 스터디 10일차 TIL 이중우선순위큐
  • 99클럽 코테 스터디 9일차 TIL 더 맵게
  • 99클럽 코테 스터디 7일차 TIL 하노이의 탑
  • 99클럽 코테 스터디 6일차 TIL 의상
Been
Been
BeenBeen 님의 블로그입니다.
  • Been
    Been
    Been
  • 전체
    오늘
    어제
    • 분류 전체보기 (60)
      • 언어 (0)
        • Kotlin (0)
      • 안드로이드 (17)
      • iOS (3)
      • Git (1)
      • 스터디 (39)
        • 알고리즘 문제 풀이 (1)
        • 99클럽 코테 스터디 TIL (38)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

    IOS
    nsl
    EditText
    WRITE EXTERNAL
    깃
    FragmentStateAdapter
    밑줄제거
    항해99
    풀이실패
    언더라인 제거
    TIL
    maxWidth
    RecyclerView
    코딩테스트준비
    개발자취업
    리싸이클러뷰
    java
    Android
    아이폰
    NSR
    99클럽
    Androiod
    객체변환
    자바
    Git
    쓰기권한
    debugRuntimeClasspath
    안드로이드
    Coroutines
    AndroidID
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
Been
99클럽 코테 스터디 8일차 TIL 기능개발
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.