본문 바로가기
행렬 테두리 회전하기 - 프로그래머스 (Java, Level 2) ​ 처음 풀이 행렬 초기화하는 메소드 fillMatrix() query에 맞게 행렬을 회전하는 메소드 rotate()를 선언한다. 이 때, rotate()에서, 각 회전 당 이동하는 모든 숫자에 접근 가능하니 최솟값을 리턴한다. rotate()에서 숫자 한 칸씩 이동시킬 때, Queue에 현재 위치의 숫자를 담은 후, Queue 맨 앞 숫자로 치환한다. import java.util.*; class Solution { int[][] board; Queue queue; public int[] solution(int rows, int columns, int[][] queries) { board = new int[rows][columns]; queue = new LinkedList(); fillMatrix(r.. 2022. 3. 14.
Overriding 오버라이딩 Overriding 규칙 1. static, final, private 메소드는 overriding할 수 없다. - static 메소드를 자식 클래스에서 static 메소드로 다시 정의할 때는 method hiding이 일어난다. 2. 메소드 이름, 매개 변수 타입, 리턴 타입이 같아야 한다 3. 부모 클래스에서의 접근 제한보다 더 강할 수 없다. 4. 부모 클래스에서와 같거나 더 좁은 Exception을 발생할 수 있다. Static Method Dispatch vs Dynamic Method Dispatch (정적 바인딩, 동적 바인딩) Static Method Dispatch - 컴파일 시점에서 컴파일러가 어떤 특정 메소드를 호출할 지 정확히 알고 있는 것이다. - 컴파일 코드에 이미 정보가 남아있.. 2022. 3. 14.
게임 맵 최단거리 - 프로그래머스 (Java, Level 2) 처음 풀이 보자마자 dfs가 먼저 떠올랐다. 이동할 때마다 isOkToGo()로 범위, 방문 여부, 벽을 확인한다. 목적지에 도착하면 최솟값을 갱신한다. boolean[][] isVisited int min = Integer.MAX_VALUE; public int solution(int[][] maps) { isVisited = new boolean[maps.length][maps[0].length]; dfs(0, 0, maps, 1); //한 번도 갱신이 안되었으면 목적지에 도착하지 못한 것이니 -1리턴 return (min==Integer.MAX_VALUE)? -1 : min; }//solution() end public void dfs(int y, int x, int[][] maps, int cou.. 2022. 3. 5.
JadenCase 문자열 만들기 - 프로그래머스 (Java, Level 2) 처음 풀이 - 아스키코드 'A' -> 65, 'a' -> 97, 공백 -> 32 public String solution(String s) { StringBuilder sb = new StringBuilder(); //앞 단어 공백 확인 //맨 첫 단어때문에 true로 초기화 boolean spaceFlag = true; int length = s.length(); for(int i=0; i='A' && next='a') { //소문자 if(spaceFlag) { //앞이 공백이었다면 대문자로 next -= 32; }//if end }//if~else end spaceFlag = (next==32)? true : false; sb.append(next); }//for end return sb.toStri.. 2022. 3. 5.
피로도 - 프로그래머스 (Java, Level 2) 던전의 개수가 8개이므로, 완전탐색을 해도 괜찮겠다 생각했다. 그 중 dfs 방식을 사용했다. 처음 풀이 boolean[] isVisited; //각 중단조건에서 방문한 던전 수 저장할 queue PriorityQueue pq; public int solution(int k, int[][] dungeons) { isVisited = new boolean[dungeons.length]; //최댓값을 구하기 위해 최대 priority queue로 생성 pq = new PriorityQueue(Collections.reverseOrder()); dfs(k, dungeons); return pq.poll(); }//solution() end public void dfs(int k, int[][] dungeons.. 2022. 3. 2.
두 개 이하로 다른 비트 - 프로그래머스 (Java, Level 2) 시간초과 풀이 비트 논리 연산자와 bitCount() 활용한 풀이 public static void solution(long[] numbers) { //비트 논리 연산(&, |, ^, ~), bitCount()활용 for(int i=0; i 2022. 3. 2.
모음 사전 - 프로그래머스 (Java, Level 2) 풀이 1. 각 자리수마다 넘어가는 숫자의 규칙 public int solution(String word) { int answer = 0; char[] charWord = word.toCharArray(); int[] intArr = {781, 156, 31, 6, 1}; for(int i=0; i5) return; list.add(str); for(int i=0; i5) return; list.add(sb.toString()); for(int i=0; i 2022. 2. 25.
최댓값과 최솟값 - 프로그래머스 (Java, Level 2) 처음 풀이 import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.StringTokenizer; class Solution { public String solution(String s) { StringBuilder sb = new StringBuilder(); StringTokenizer st = new StringTokenizer(s); List list = new ArrayList(); while(st.hasMoreTokens()) { list.add(Integer.valueOf(st.nextToken())); }//while end //리스트 정렬 Collections.sort(l.. 2022. 2. 21.
Integer.valueOf() vs Integer.parseInt() int num1 = Integer.parseInt("111"); int num2 = Integer.valueOf("111"); System.out.println(num1); //111 System.out.println(num1); //111 위 두 결과가 같게 나온다. 여기서 parseInt()와 valueOf()의 차이점은 무엇일까? parseInt() Java 공식 api 문서를 보면 public static int parseInt(String s) throws NumberFormatException Parses the string argument as a signed decimal integer. The characters in the string must all be decimal digits, .. 2022. 2. 21.
구명보트 - 프로그래머스 (Java, level 2) 처음 풀이 import java.util.Arrays; class Solution { public int solution(int[] people, int limit) { Arrays.sort(people); //짝의 수 int count = 0; //최대한 무게 차이가 많이 나는 사람끼리 짝해야 최소값 int index = people.length; //짝 지어진 (무거운)사람의 index //다음 cycle 때 index-1부터 탐색 for(int n=0; nn; i--) { if((people[n]+people[i]) 2022. 2. 18.