복습 6
2020-04-17
복습 6
프로그래머스 스킬체크 테스트 2
-
트럭(Queue)
불과 그제풀고, 어제 복습했던 문제인데도 10분컷을 하지 못했다…
일단 조건은 제대로 맞추었으나!
트럭을 더 적재하는 부분의 조건에서 idx를 넘어가지 않는다는 조건을 걸어주지않아서… 헤맴!
if(idx<truck_weights.length){ int w = 0; for(int i=0; i<trk.size(); i++){ w += trk.get(i).wei; } if(w + truck_weights[idx] <=weight){ trk.add(new truck(truck_weights[idx],1)); idx++; } }
-
조이스틱 (Greedy)
참으로 오랜만인 문제!
- 제일 오래걸리는 건 끝까지 다 가는 것! or
- 현재위치에서 다시 0위치로가서 (i+i) , 맨뒤로가서 (len), A를 만나기 직전까지!(next)
- 따라서 i+i+len-next
또, 맨끝까지가서는 비교할 필요가 없으니 for문은 len-1까지만 돌아준다!
static public int solution(String name) { int answer = 0; for(int i = 0; i<name.length(); i++) { if(name.charAt(i) -'A' <13) answer += name.charAt(i)- 'A'; else answer += 'Z' - name.charAt(i)+1; } int min_move = name.length()-1; for(int i=0; i<name.length()-1; i++) { int next = i+1; while(next<name.length() && name.charAt(next) == 'A') next++; min_move = Math.min(min_move, (i+name.length()) + i-next); } return answer + min_move; }