문제 나의 생각 해당 문제는 stream에 있는 sort를 활용하여 해결한 문제이다. compare함수를 사용하여 -1 , - ,1 값을 반환 받아서 앞으로 가야하는지 가만히 있어야 하는지, 뒤로가야하는지 판단하고 처리하는 방식이다. 나의 답안 public int[] solution(int[] numlist, int n) { return Arrays.stream(numlist) .boxed() .sorted((a,b) -> Math.abs(a - n) == Math.abs(b - n) ? b.compareTo(a) : Integer.compare(Math.abs(a-n), Math.abs(b -n))) .mapToInt(Integer::intValue) .toArray(); } 공부한 내용 - x.com..
문제 나의 생각 지뢰가 발견되 지역기준으로 주변 8개가 1로 변경이 되어야 한다. 그렇다면 기준 좌표 기준으로 (-1,-1) ~ (+1,+1) 되는 좌표들만 1로 변경을 하면된다. 나의 답안 public static int solution(int[][] board) { int answer = 0; int[][] clone = new int [board.length][board.length]; for (int i = 0; i < board.length; i++) { for (int j = 0; j < board[i].length; j++) { if (board[i][j] == 1) check(i,j,clone); } } for (int i = 0; i < clone.length; i++) { for (in..
문제 나의 생각 2중 for문으로 -num 값 부터 total 값까지 순차적으로 비교하여 sum 값이 값을 때 return 하는 방식으로 접근. 나의 답안 public static int[] solution(int num, int total) { int[] answer = new int[num]; int sum = 0; for (int i = -num; i
문제 나의 생각 다항식에 x값과 정수 값을 나누어 더하기를 시행만 해주면 된다. 그렇다면 입력되는 매개변수를 " + ' 기준으로 나누어 배열에 넣고 남은 값들을 기준으로 x 가 있으면 계산을 별도로 진행, 정수는 바로 더하기 해주는 방식으로 접근. x 만 입력된 1x 가 될 수 있으니 해당 경우 return시 x로 변환하여 반환토록 진행. 나의 답안 public static String solution(String polynomial) { int sumA = 0; int sumB = 0; String[] split = polynomial.split(" [+] "); for (int i = 0; i < split.length; i++) { if (split[i].contains("x")) { if (spl..
문제 나의 생각 처음에는 for문으로 접근 하려고 하다가 while문이 좀 더 적절한 방식이라고 판단하여 while으로 진행. 입력값 n 만큼 진행되어야 하는 while문 안에 저주받은 수를 체크하는 while은 두어 3이 들어 있거나 3의 배수일 경우가 아닐 때 반복문을 빠져나오게 함. 나의 답안 public static int solution(int n) { int count = 0; int time = 0; while (n > time) { while (true) { count++; String s = Integer.toString(count); if (!s.contains("3") && !(count % 3 == 0)) { break; } } time++; } return count; }
문제 나의 생각 유한소수를 구하는 방식중에 하나는 나누기를 하고 소수점이 16자리 이상이면 유한소수라고 판별이 되는 방식이 있다. 해당 방식을 이용하여 처리하는 방법을 진행. 나의 답안 public static int solution(int a, int b) { Double db = (double) a / b ; String dbStr = String.valueOf(db); return dbStr.length() >= 16 ? 2 : 1; }