DFS인데 재귀로 안풀고 그냥 체크하는 방식으로 했음 조건절중 if문 가장 마지막 1칸 아래, 1칸 왼쪽을 체크 안해줘서 테케 3개인가 틀림 어떠한 자리 P를 기준으로 맨해튼 거리가 2이하인 점은 아래 그림과 같은데 DFS로 처리하면 아래 점들을 모두 체크하지만 점 P를 기준으로 대칭되어 있는 점은 체크할 필요가 없기 때문에 수행시간을 반으로 줄일 수 있음 근데 파란 부분 점들만 체크하고 빨간점 중 둘 중 1개를 체크해줘야 맨해튼 거리가 2이하인 점들을 모두 체크할 수 있는 건데 저 빨간 부분을 체크안해줘서 틀림.. class Solution { public int[] solution(String[][] places) { int[] answer = new int[5]; for(int i=0; i
하.. map에 부분집합 저장할 때 누적이 안되고 자꾸 1로 갱신된다.. getOrDefault 썼는데도 이러네 이유 찾았다 또 스펠링임 이거 프로그래머스 ide가 이상한게 컴파일 에러를 제대로 못찾는 것 같음 Line:60~61번 subsetMap.put(subset, subsetMap.getOrDefault(subsetMap, 0)+1); -> subsetMap.put(subset, subsetMap.getOrDefault(subset, 0)+1); 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 47 48 49 50 5..
System.out.println(str1); System.out.println(str1.matches("^[A-Z]*$")); // 출력 FRANCE true AA1+AA2 false E=M*C^2 false
문제에서 하라는대로 하면 되긴 하는데 좀 그냥 헷갈림..ㅠ 마지막 부분 UInfo Class에서 생성자에서 parameter를 isMatched가 아니라 isMached로 잘못써서 자꾸 false값만 나오길래 곤경에 빠졌었다.. this.isMatched = isMatched가 this.isMatched = this.isMatched가 된듯.. 그러니 boolean기본값인 false만 계속 박혔었던 것 같다 class Solution { public String solution(String p) { return divideUV(new StringBuilder(p)).toString(); } private StringBuilder divideUV(StringBuilder sb){ if(sb.length()..
1. orders배열의 order들을 toCharArray()로 char[]로 변환 후 Arrays.sort(char[]) 후에 String.valueOf(char[])로 알파벳 순으로 정렬된 주문 요리순서로 바꿈 (이거 안해주면 나중에 map으로 누적시킬 때 "XY" "YX" 이런 요리 조합이 따로 누적됨) 2. comb 메서드는 계속 하면 indexOutOfRange뜨다가 결국 완성함 3. combOrder 메소드의 마지막 parameter인 int PreIdx가 핵심이었는데 이걸 안해주면 XYZ의 조합에서 ZZZ AB 조합에서 BB 이런 것이 나옴 4. mostOrderNum int[]을 통해 n개 조합의 최다 주문된 횟수를 mostOrderNum[n]에 Math.max를 통해 계속 갱신시켜줄것 i..
규칙 찾으면 끝 N세대의 드래곤 커브는 N-1세대커브의 역순의 막대기들을 뽑아서 그리는데 화살표 방향이 index를 +1한 방향으로 수정한 후에 그리면 된다 드래곤 커브를 세대별로 전부 모아서 그려도 되고 나같은 경우는 그냥 1세대씩 그리고 모으고 그리고 모으고 했음 import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.util.ArrayList; import java.util.LinkedList; import java.util.List; import ja..
구현인데 행렬회전이 안 익숙해서 좀 오래 걸리기도하고 무수히 많은 indexOutOfRange랑 악수했다 이거 matrix문제 풀 때는 2차원 배열 표시할 때 (x,y)로 하지 말고 (r,c)으로 해야 안 헷갈리는 것 같다 (x,y)로 하면 arr[y][x]로 해야되서 더 헷갈려짐..ㅠㅠ 나중에는 종이에 그림에 미리 그려놓은 다음에 index부분에서는 exception안나게 해야겠다.. 맨날터지네 index관련한건 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 47 48 49 50 51 52 53 54 55 56 57 58..
1234567891011121314151617181920import java.util.*; class Solution{ public int solution(String s) { Stack st = new Stack(); for(int i=0; i
12345678910111213141516171819class Solution { public int solution(int[] numbers, int target) { return DFS(numbers, target, 0, 0); } public int DFS(int[] numbers, int target, int preOrder, int total){ if(preOrder == numbers.length){ // System.out.println(preOrder+" "+total); if(total==target) return 1; else return 0; } return DFS(numbers, target, preOrder+1, total+numbers[preOrder])+ DFS(numbers,..
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 import java.util.*; class Solution { public int[] solution(int[] progresses, int[] speeds) { List list = new ArrayList(); int i = 0; while(iinteger.intValue()).toArray(); int[] answer = listToArray(list); return answer; } public int requiredDays(int progress, int speed){ ..