본문 바로가기

전체 글

(55)
ArrayList 정렬 1. Collections.sort(list);ArrayList를 오름차순으로 정렬 2. Collections.sort(list, Collections.reverseOrder());Collections.sort()의 2번째 파라미터로 내림차순 정렬을 나타내는 Comparator를 전달해서,ArrayList를 내림차순으로 정렬 3. Collections.sort(list, String.CASE_INSENSITIVE_ORDER);String.CASE_INSENSITIVE_ORDER 를 전달하면, 대소문자 구분없이 오름차순으로 정렬 4. Collections.sort(list, Collections.reverseOrder(String.CASE_INSENSITIVE_ORDER));대소문자 구분없이, 내림차순으로..
Map 1. Map- key를 통해 value를 얻는다. - key, value 방식 2. 특징- 저장 순서를 유지하지 않는다. ※ 저장 순서를 보장하고 싶은 경우에는 LinkedHashMap를 활용- 키는 중복을 허용하지 않는다.- 값은 중복을 허용한다. 3. 메소드메소드 명설명예제cotainsKey(Object key)지정된 키가 존재하는지 여부`map.containsValue(10)` // trueentrySet()모든키-값을 꺼낼 때`for(Map.Entry entry : people.entrySet()) { System.out.println(entry.getKey() + entry.getValue());}`size()저장된 키-값 쌍의 개수를 반환`map.size()` // 2
[개념, 코드트리] dx, dy 테크닉 5 - 빙빙 돌며 숫자 적기 n * n크기의 정사각형에 숫자 1부터 순서대로 증가시키며, 달팽이 모양으로 채우는 코드를 작성1. 이동하는 위치가 격자를 벗어나지 않는지 확인2. 이미 방문했던 곳은 아닌지 확인3. x, 는 행, 열을 기준으로 한다. 문제   import java.util.Scanner;public class Main { // 행, 열 static int n,m; // 시작 위치 static int x = 0, y = 0; // 진행 방향 -> 0 : 오른쪽, 1 : 아래쪽, 2 : 왼쪽, 3 : 위쪽 static int dir = 0; static int[] dx = new int[] {0, 1, 0, -1}; static int[] dy = new int[] {1, 0, ..
[개념, 코드트리] dx, dy 테크닉 4 - 조건에 따라 방향이 변하는 경우 n * n 크기의 격자 위 (x,y) 위치에서 격자 끝에 다다르면, 방향을 반대로 바꿔 다시 움직일 경우1. 격자 끝에 도착하면 방향을 반대로 뒤집어 줘야 하기 때문에 0번과 3번이 반대 방향이 되도록 하고, 1번과 2번이 반대 방향이 되도록 한다.2. 방향을 뒤집는 작업은 숫자 3에서 현재 방향 번호를 빼주면 된다.3. x, y는 행, 열을 기준으로 한다. 문제벽으로 둘러싸인 n행 n열의 격자 안에 한 개의 구슬이 놓여져 있다. 이 구슬은 상하좌우 중 특정 바향으로 1초에 한 칸씩 움직인다.구슬이 벽에 부딪히면 움직이는 방향이 반대로 뒤집혀 동일한 속도로 움직이는 것을 반복한다. 이때 방향을 바꾸는 데에는 1만큼의 시간이 소요된다.   import java.util.Scanner;public class..
[개념, 코드트리] dx, dy 테크닉 3 - 격자에서의 dx, dy 1행 3열 → 3개 2행 2열 → 3개2행 4열 → 3개3행 3열 → 4개 총 4개의 칸import java.util.Scanner;public class Main { // dx, dy 행, 열 기준으로 정의 static int[] dx = new int[] {0, 1, 0, -1}; static int[] dy = new int[] {1, 0, -1, 0}; // 범위 지정 static boolean inRange(int x, int y) { return (1 1행 2열 이런 식으로 상하좌우 탐색 int nx = i + dx[dir]; int ny = j + dy[dir]; ..
[개념, 코드트리] dx, dy 테크닉 2 - 시계 방향, 반시계 방향 시계, 반시계 방향 dx, dy를 시계 방향 순서대로 정의 0123dx10-10dy0-101 동쪽을 바라보고 있으면  `if(dir ==0)` 90도 회전시 남쪽 `dir = 1`시계 방향으로 90도 회전 하는 것은 dir을 1 증가시키는 것을 알 수 있다. → `(dir+1) % 4`반시계 방향 → `(dir-1+4) % 4`  북쪽으로 향하고 있는 상태에서 L 명령을 받게 되면 서쪽을 바라보게 되고다음 F명령을 받게 되면 서쪽으로 한 칸 이동 import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String..
[개념, 코드트리] dx, dy 테크닉 1 - 방향에 맞춰서 이동 시뮬레이션명령에 맞게 동작하는 코드를 작성하는 것 dx, dy 테크닉 특정 방향에 대해 이동하는 경우에 대해서 dx, dy 테크닉을 많이 사용한다.각 방향에 따라 dx, dy를 적어주면 된다.   (x,y)의 행, 열 기준이 아닌 동, 서, 남, 북 기준으로 정해주었다. 동쪽의 방향으로 갈 땐 (1, 0)서쪽의 방향으로 갈 때 (-1, 0)남쪽의 방향으로 갈 때 (0, -1)북쪽의 방향으로 갈 때 (0, 1) 위로 3칸, 오른쪽으로 2칸, 아래로 1칸 이동 후 오른쪽으로 다시 2칸 이동하면 최종 위치는 (4,2)가 된다.import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner ..
개념 구현일련의 명령에 따라서 개체를 차례로 이동시키는 것 풀이를 떠올리는 것은 쉽지만, 소스코드로 옮기기 어려운 문제 종류알고리즘은 간단한데 코드가 지나칠 만큼 길어지는 문제실수 연산을 다루고 특정 소숫점 자리까지 출력해야 하는 문제문자열을 특정한 기준에 따라 끊어 처리해야 하는 문제적절한 라이브러리를 찾아서 사용해야 하는 문제