VendingMachine
By 불타는 아잍(IT)스크림 | 2020년 2월 28일 |
Code public class VendingMachine{ int rows, cols; int ts; // a total of seconds int ci, cj; // current i, current j; int[][] p; void addSecs(int nj) { int a = Math.abs(nj - cj); int b = cols - Math.abs(nj - cj); ts += (a < b) ? a : b; } void setMaxCol() { int max = -1, mj = cj; for (int j = 0; j < cols
알고리즘 응용문제 챕터 진입, 실패, 그리고 반성
By 쾌청모멘트의 쾌청한 하루 | 2017년 4월 3일 |
![알고리즘 응용문제 챕터 진입, 실패, 그리고 반성](https://img.zoomtrend.com/2017/04/03/b0057850_58e1e74bf3b93.jpg)
어느새 탑코더 알고리즘 트레이닝 책의 마지막 단원인 응용문제 파트까지 도달했다. 블로그에 올린게 8문제, 그리고 따로 푼게 그 정도이니 한 달 치고는 꽤 많은 문제를 다뤄본 셈이다. 그런데 이 응용문제 파트, 정말 그동안 내가 뭘 했나 싶을 정도로 절망감을 안겨준다. 시도한 문제는 '바이너리 플립' 으로 디비전1의 레벨 2에 위치한 문제. 처음으로 마주치게 된 디비전 1 문제이다. 0이 쓰여진 카드가 A장, 1이 쓰여진 카드가 B장 존재한다. 각 턴에 K개를 뒤집을 때 모두 1로 만드는 것은 가능한가? 가능하다면 그 최소 턴은? 그리고 저자는 '이 문제를 제한 시간 내에 풀 수 있으면 레드 코더에 가까울 것' 이라는 말로 호승심을 불태웠다. 생각한 방법은 당연
ArithmeticSequenceDiv1
By 불타는 아잍(IT)스크림 | 2019년 12월 20일 |
Code public class ArithmeticSequenceDiv1 { public int findMinCost(int[] x) { int n = x.length; int min = 10000; int maxGap = 0; for (int i = 0; i < n-1; i++) if(Math.abs(x[i+1]-x[i]) > maxGap) maxGap = Math.abs(x[i+1]-x[i]); for (int d = -maxGap; d <= maxGap; d++) { for (int a = -200; a <= 200; a++) { int sum
TreasureHunt
By 불타는 아잍(IT)스크림 | 2019년 12월 20일 |
Code public class TreasureHunt{ int xLen,yLen; char[][] land; String[] inst; boolean instCheck(int x, int y) { int[] dx = {0,-1,1,0}; int[] dy = {-1,0,0,1}; for (int k = inst.length-1; k >= 0; k--) { char d = inst[k].charAt(0); int p = inst[k].charAt(2)-'0'; if (d == 'W') { while(p-->0)