목록Argorithm (78)
빙응의 공부 블로그

📝풀이 배열 처리를 위한 JAVA String 메소드와 HashMap을 사용하면 쉽게 풀 수 있다. 들어온 배열을 String의 chatAt로 추출 후 HashMap에 저장하며 저장할 때 같은 key가 있다면 둘 중 더 작은 값(즉, 더 우선순위에 있는 키) import java.util.HashMap; class Solution { public int[] solution(String[] keymap, String[] targets) { HashMap key = new HashMap(); int[] answer = new int[targets.length]; for (int i = 0; i < keymap.length; i++) { for (int j = 0; j < keymap[i].length(); ..

📝풀이 문제에 대해 생각해봤는데, section에서 처음으로 나오는 수에 칠하고 m에 범위에 들어가는 section 값을 무시하면 된다. 범위에서 넘으면 다시 칠하고 칠한 수를 다음 비교 수로 넣으면 된다.. class Solution { public int solution(int n, int m, int[] section) { int answer = 0; int first = Integer.MIN_VALUE; //칠한 기준 위치를 표시하는 비교 수 for(int sec:section){ if(first+m

📝풀이 해당 문제에서 제일 중요한 것은 문제의 이해 능력이다. 파일을 한번에 삭제하기 위한 좌표를 구하는 문제인데 모든 파일이 범위에 있기 위해서는 모든 파일의 좌표 중 (X의 최솟값 , Y의 최솟값)부터 (X의 최대값, Y의 최대값)을 구하면 된다. 하지만 그냥 구하는 것이 아닌 최대 값 좌표는 파일의 범위까지 생각해야한다. 해당 그림으로 보면 파일 좌표의 최소 값은 (0, 1)이고 최대 값은 (2, 3)인걸 알 수 있다. 그러나 그것은 파일의 좌표만 알려줄 뿐 파일 전체를 드레그 하는 좌표는 아니기 때문에 최대 값은 X, Y에 1씩 더 해줘야 한다. 문제만 이해하면 구현은 쉬운 문제이다. class Solution { public int[] solution(String[] wallpaper) { //..

📝풀이 해당 문제는 park가 들어올 때 2차원 배열이 아닌 1차원 배열로 들어와서 문자열 취급 문제이다. 풀이에 사용한 자바 문자열 클래스에 대해 설명하겠다. 리턴 타입 코드 용도 int length() 문자열의 길이를 반환한다. char charAt(index) 주어진 인덱스의 문자를 반환한다. int parseInt(str) 문자열을 정수로 변환 String valueOf(Object) 문자열로 변환 그 다음에는 조건만 구현하면 된다. 1. park의 범위를 넘는가? 2. 장애물을 만나는가? class Solution { public int[] solution(String[] park, String[] routes) { //검사에 사용할 2차원 배열 parkArr 선언 char[][] parkArr..

📝풀이 각 사람마다 점수를 저장하고 사진 배열에 따라 점수를 계산해야 한다. 일반 배열로 실행 시에 배열을 3개나 써야하고 로직이 불편해진다. Key, Value 방식으로 {사람: 정수}를 묶어 사용하면 편하게 할 수 있다. import java.util.HashMap; class Solution { public int[] solution(String[] name, int[] yearning, String[][] photo) { HashMap map = new HashMap(); //[A] 해시맵 선언 int[] answer = new int[photo.length]; for(int i = 0; i < name.length; i++) //[B] 해시맵 초기화 map.put(name[i], yearning..

📝풀이 해당 문제는 일반 배열로 비교하면 안된다. 그 이유는 Players 최대가 50,000 Callings의 최대가 1,000,000이므로 최대 50,000 x 1,000,000번이 돌아간다. 이런 반복횟수가 나올 수 있는 배열을 사용하면 당연히 시간 초과가 나오게 된다. 그렇기에 빠른 검색이 가능한 자료 구조를 사용해야한다. 일반적으로 빠른 검색은 "HashMap"을 사용하면 된다. import java.util.HashMap; class Solution { public String[] solution(String[] players, String[] callings) { HashMap map = new HashMap(); //[A] 해시맵 선언 for(int i =0; i < players.leng..