문제 보러 가기 이 문제는 정확도와 효율성 2가지를 만족해야 하는 문제였다. 행 개수 n 0) { curNode = curNode.next; } for (int i = 0; i < cmd.length; i++) { String[] s = cmd[i].split(" "); if (s.length == 1) { if (s[0].equals("C")) {//삭제C curNode.prev.next = curNode.next; curNode.next.prev = curNode.prev; zNode.push(curNode); //root가 삭제될경우 next노드가 root노드가됨 if (curNode == root) { root = curNode.next; curNode = root; } //tail노드가 삭제될 ..
long 자료형 보통 정수는 기본 자료형인 int를 많이 사용한다. 하지만 int의 표현 범위를 넘는 값을 변수에 담아서 사용한다면 long형을 사용해야 한다. int long 저장공간 4byte 8byte 범위 -2147483648 ~ 2147483647 -9223372036854775808 ~ 9223372036854775807 BigInteger 클래스 long형을 넘는 더 큰 범위의 정수를 다룰 때 사용하는 클래스로 java.math에 속한다. int, long과 같은 자료형처럼 사칙연산(+,-,*,/,%)을 기호로 할 수 없고, BigInteger에서 제공하는 메서드를 이용해야 한다. 생성 방법 // 문자열로 생성 BigInteger bigInteger = new BigInteger("12345..
문제 보러 가기 1647번: 도시 분할 계획 첫째 줄에 집의 개수N, 길의 개수M이 주어진다. N은 2이상 100,000이하인 정수이고, M은 1이상 1,000,000이하인 정수이다. 그 다음 줄부터 M줄에 걸쳐 길의 정보가 A B C 세 개의 정수로 주어지는데 A번 집 www.acmicpc.net 이 문제는 MST(최소 신장(스패닝) 트리)를 이용하여 풀 수 있었다. 크루스 칼, 프림 두 개의 알고리즘으로 풀이가 가능했고 나의 경우 프림 알고리즘으로 풀었다. 문제풀이 2개의 도시로 분할해야 하므로 프림 알고리즘을 통해 MST를 만든 후 가장 비용이 높은 간선 하나를 제거하면 2개의 도시로 나눠지고 최소 비용을 구할 수 있다. - 임의의 시작 노드를 Queue에 넣고 연결된 NodeList를 Priori..
이 Exception의 경우 주로 Collection객체를 loop로 다룰 때 발생하게 된다. 나의 경우 Queue를 Iterator를 통해 탐색할 때 발생하였다. Iterator란? : java에서 Collection에 저장되어있는 요소들을 읽어오는 표준화된 방법 중 하나이다. Queue q = new LinkedList(); q.add(1); q.add(2); q.add(3); Iterator iter = q.iterator(); //1. 반복문 안에서 단순히 요소 접근만 함 while(iter.hasNext()){ System.out.println(iter.next()); } iter = q.iterator(); //2. 반복문 안에서 타겟 리스트 객체를 수정함 while(iter.hasNext()..
문제 보러 가기 10775번: 공항 예제 1 : [2][?][?][1] 형태로 도킹시킬 수 있다. 3번째 비행기는 도킹시킬 수 없다. 예제 2 : [1][2][3][?] 형태로 도킹 시킬 수 있고, 4번째 비행기는 절대 도킹 시킬 수 없어서 이후 추가적인 도킹은 불 www.acmicpc.net 이 문제는 유니온 파인드를 이용해 풀이할 수 있는 문제였다. 유니온 파인드를 이렇게 사용할 수 있다는 걸 알았던 문제. 문제풀이 - G개의 게이트 P개의 비행기가 주어질 때 첫 번째 비행기가 아래와 같이 2번 게이트에 도착하게 된다 -조건 1. 각 게이트당 한 개의 비행기만 도착하여 도킹할 수 있음 2. 1~gi의 게이트에 도킹이 가능 ex) 3번 게이트에 도착한다면 1,2,3번 게이트에 도킹 가능 - 이미 2번 ..
indexOf : 자료구조에서 특정 문자의 인덱스를 찾기 위해 사용된다. 자바 배열에서는 indexOf()를 지원하지 않고 ArrayList자료구조에서만 지원하므로 asList()를 통해 변환시켜 인덱스를 구해야 한다. import java.util.Arrays; public class IndexOfTest { public static void main(String[] args) { String[] arr = {"a","b","c"}; System.out.println(Arrays.asList(arr).indexOf("b")); //1이 출력된다. }
문제 보러 가기 13460번: 구슬 탈출 2 첫 번째 줄에는 보드의 세로, 가로 크기를 의미하는 두 정수 N, M (3 ≤ N, M ≤ 10)이 주어진다. 다음 N개의 줄에 보드의 모양을 나타내는 길이 M의 문자열이 주어진다. 이 문자열은 '.', '#', 'O', 'R', 'B' www.acmicpc.net 이 문제는 예전에 풀려다가 실패하고 까먹었었던 문제인데 이번에 다시 풀어보았다. bfs 탐색을 하며 빨간 구슬 R이 구멍이 O에 들어갈 수 있는지 확인하는 문제이다. * 놓칠 수 있는 조건들 1. 10번 이상 움직여야 하는 경우 구슬을 탈출시킬 수 없다고 판단. -1을 return 해야 함 2. 구슬의 위치를 바꿨다면 이전 구슬의 위치는 삭제 후 탐색해야 함 3. 구슬 두 개의 위치로 방문 체크를 ..
문제 보러 가기 14503번: 로봇 청소기 로봇 청소기가 주어졌을 때, 청소하는 영역의 개수를 구하는 프로그램을 작성하시오. 로봇 청소기가 있는 장소는 N×M 크기의 직사각형으로 나타낼 수 있으며, 1×1크기의 정사각형 칸으로 나누어 www.acmicpc.net 이 문제는 그래프 탐색 + 구현 문제이다. 특별히 신경 써야 될 점은 2가지가 있다. 1. 방향 탐색 순서 2. 4방향 모두 벽 or 이미 청소 완료 일 때 -> 현재 방향으로 후진 문제풀이 - 문제에서 입력받은 청소기의 현재 위치 r, c 방향 d로부터 탐색. - 현재 방향의 왼쪽 칸부터 탐색해야 하므로 반시계 방향 순서대로 탐색 ex) 현재 방향↑ 이면, ← ↓ → ↑방향 순서대로 탐색 - 여기서 주의점 , 문제에서는 처음 d를 0인 경우에는..
- Total
- Today
- Yesterday
- BFS
- 완전탐색
- 최소 스패닝 트리
- Baekjoon
- 자바
- programers
- Stomp
- git
- java
- 운영체제
- Oracle
- 삼성 sw역량테스트
- Spring
- SWEA
- 코딩테스트
- 정렬
- JavaScript
- 백준
- OS
- 채팅
- Heap
- 분리 집합
- DP
- MST
- websocket
- 알고리즘
- 삼성 sw역량 테스트
- 프로그래머스
- sockjs
- dfs
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |