전체 글

다른 사람의 풀이 class Solution { public int solution(int n, int a, int b) { return Integer.toBinaryString((a-1)^(b-1)).length(); } } 더 간략하게 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 class Solution { public int solution(int n, int a, int b) { int answer = 0; while(a!=b){ a = (a+1)/2; b = (b+1)/2; answer++; } return answer; } } Colored by Color Scripter cs 맨 처음 푼 방식 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1..
BFS로 풀어야 하는 문제라고 한다.. 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152import java.util.*; class Solution { private static int[] dr = {0, 1, 0, -1}; private static int[] dc = {1, 0, -1, 0}; private static boolean[][] visited; private static int n, m; public int solution(int[][] maps) { n= maps.length; m= maps[0].length; visited = new boolean[n][m]; r..
알파벳을 바꾸는 부분은 어렵지 않다.. 중요한 부분은 좌우키를 어떤 식으로 움직여서 최소한으로 움직이느냐인데.. 실패했다 Line:19가 너무나 중요함 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 import java.util.*; class Solution { private static int answer; // private static List noAindexList; public int solution(String name) { answer = 0; int len = name.length(); int min = name.length()-1; for(i..
220607 12345678910111213141516171819202122232425262728293031323334353637383940import java.util.*; class Solution { public int solution(String numbers) { int answer = 0; Set set = new HashSet(); permutation("", numbers, set); while(set.iterator().hasNext()){ int a = set.iterator().next(); set.remove(a); if(isPrime(a)){ answer++; } } return answer; } private boolean isPrime(int n){ if(n==2) return..
테케 11번 반례 [0, 0, 0] => "000" (x) [0, 0, 0] => "0" (o) clearZero메서드를 하나 만들어줌 만들어줬는데 clearZero 필요 없는 더좋은 코드 있어서 그거씀 Line:20의 의미는 [0] , [0, 0] , [0, ... , 0] 등의 오직 원소가 0뿐이고 n개로 이루어진 String의 charAt(0)은 반드시 0인 특징을 활용하여 짜준거 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 import java.util.*; c..
220607 효율성 3,4 실패 (수정전)으로 돌릴 시 시간복잡도 n^2 (수정후)으로 돌릴 시 시간복잡도 nlogn 효율성 3,4번 실패함 O(n^2)으로 풀어서 그런듯 O(n)으로 해결이 되는데 정렬 후에(사전 순으로) 앞뒤 문자만 체크해줘도 해결이 되는 방식이 뭔가 신기했다.. (수정 전) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 import java.util.*; class Solution { public boolean solution(String[] phone_book) { boolean answer = true; for(int i=0; i
220606 실수 1. 오름차순을 내림차순으로 착각 2. Line:48~50 nr = makeRow(nr, nDir); nc = makeCol(nc, nDir); nDir = makeDir(nr, nc, nDir); 이 부분을 nr = makeRow(nr, dir); nc = makeCol(nc, dir); nDir = makeDir(nr, nc, dir); 이렇게 실수함.. 하 ㅠ 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 59 60 61 62 63 64..
처음에는 Map으로 했는데 (Line:24의 중복된 원소를 Map.getOrDefault(..)로 했음) Set.add( )의 리턴값이 boolean형이라는 것을 다른 분 코드보고 알게 됐다 Map -> Set으로 바꾸니까 깔끔하기는한데 Map의 속도는 O(1)인데 Set.add()하면서 중복인지 아닌지 판별하는 속도가 O(1)보다는 클 것이라고 생각한다 둘다 HashFuncion을 사용하는 자료구조였음.. Set의 탐색은 O(1)/저장 O(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 import java.util.*; class Solution { public int[] solution(..
220605 시간복잡도가 초과했었는데 기본으로 주어지는 연산자 3개 +,*,- 만으로 조합을 구성해야하는데 문제의 예시의 ex)100-234+234243-345*... 등의 연산자 n개의 배열을 활용하여 조합을 구성했음(실수한 부분) 1. 주어진 String인 expression을 parsing하여 numList와 signList를 구하기 2. numList.size()값은 signList.size()보다 1크다 3. + - *의 순열을 구한 후에 answer의 후보값을 구하는 식을 짠다. 4. 원본 numList와 signList가 훼손되지 않게 (remove를 사용할 것이므로) 다른 list객체에 값을 복사한다. import java.util.*; class Solution { private stat..
참고 : https://joont92.github.io/java/%EC%98%88%EC%99%B8%EC%B2%98%EB%A6%AC/ [java] 예외처리 예외란 프로그램 실행 도중 발생하는 문제 상황을 얘기합니다. 따라서 컴파일 시 발생하는 문법적인 오류는 예외의 범주에 포함되지 않습니다. 예를 들면 아래와 같은 상황이 있습니다. 1234public joont92.github.io Error -> 단순히 예외라고 하기에는 심각한 오류의 상황을 표현하는 예외 try~catch문 -> swtich~case문이랑 비슷하게 위에 있는 catch{}문의 조건에 걸리면 밑에 있는 것들을 무시함 그렇기 때문에 최상위 예외 클래스인 Exception을 가장 위에 걸쳐 놓으면 좋지 않은 try~catch문이다 final..
배게
백엔드