프로그래머스(https://programmers.co.kr/learn/courses/30/lessons/42586)
자바 Level 2 문제의 기능개발 이다.
어느 덧 3일차에 다다랐다. 금일도 타이핑을 하고 또 다시 적으며 테스트 케이스를 넘기기위해 분투해보긴 했는데, 테스트 케이스는 넘겼지만 제출과정에서 "이건 아닌데." 하고 감이 왔다. 물론 아니였고, 그 후에 다시 경우의 수를 종합시켜보면서 어디서 문제가 생기는 지 파악해본 상황이다. 개인적으로 Stack으로 다시 적어보니 코드가 좋을 것 같아서 내일 한 번 적용해보려는 생각이다. speed도 같이 삭제되야 한다는 생각은 맞아떨어져서 개인적으로 다행이고 감사하다고 생각하고 있다. 시간 가는 줄 모르겠는데, 맞다. 시간가는 줄 모를만큼 빠져들게 되는 것 같은 문제이다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
package programmers_기능개발;
import java.util.ArrayList;
import java.util.List;
public class s {
public int[] solution(int[] progresses, int[] speeds ) {
int[] answer = {};
List<Integer> list = new ArrayList<Integer>();
List<Integer> speed = new ArrayList<Integer>();
List<Integer> answerList = new ArrayList<Integer>();
for(int i=0; i<speeds.length;i++) {
list.add(progresses[i]);
speed.add(speeds[i]);
}
while(!(list.isEmpty()&&speed.isEmpty())) {
for(int i=0; i<list.size();i++) {
Integer plus =(list.get(i).intValue()+speed.get(i).intValue());
if(plus>= 100) {plus =100; list.set(i, plus);}
list.set(i, plus);
}
int check =0;//<<여기서 초기화를 시켜줘야할지가 관심사
if(list.get(0).intValue() ==100) {check++;list.remove(0); speed.remove(0);
for(int i=0;i<list.size();i++) {
if(list.get(i).intValue()>= 100) {check++; list.remove(i);speed.remove(i);}
if(list.get(i).intValue()<100) {break;}//<<<
}
//System.out.println(list.size()+","+speed.size()+","+check);
answerList.add(check);check =0;
}else { check =0;}
}
answer = new int[answerList.size()];
//System.out.println(answerList.size());
for(int i=0; i<answerList.size();i++) {
answer[i] = answerList.get(i).intValue();
}
// 1,2의 경우와 동시에 다끝나는 경우를 보완해야함
return answer;
}
}
|
cs |
'자바 초급문제로 맨땅에 해딩하기' 카테고리의 다른 글
자바 Level 2 문제, 4-1. 124 나라의 숫자 진행 중. (0) | 2020.04.28 |
---|---|
자바 Level 2 문제, 3. 기능개발 진행 완성 (0) | 2020.04.24 |
자바 Level 2 문제, 3-1. 기능개발 진행 2일차 (0) | 2020.04.22 |
자바 Level 2 문제, 3. 기능개발 진행 중. (0) | 2020.04.21 |
자바 Level 2 문제, 2. 프린터 완성 (0) | 2020.04.20 |