일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |
- 피보나치함수
- 한국투자증권 양도세 신고
- katalon xpath
- tomcat log
- 피보나치 예제
- katalon 사용법
- katalon 자동화
- bfs 미로탐색 java
- 국세청 해외주식 양도세 신고방식
- 한국투자증권 해외주식 양도세
- 해외증권 양도세 한국투자증권
- 홈택스 해외주식 양도세
- 톰캣 실시간 로그
- 주식 양도세 신고방법
- 최대공약수 예제
- 재귀함수 예제
- 테스트 자동화
- CSTS 폭포수 모델
- git 연동
- recursion example
- katalon
- javascript 자동완성
- katalon 비교
- 재귀 예제
- oracle group by
- java.sql.SQLSyntaxErrorException
- Katalon Recorder 사용법
- 해외주식 양도세 신고
- js 자동완성
- 피보나치함수 예제
- Today
- Total
목록알고리즘 (50)
엄지월드
DFS로 풀었는데 메모리초과, 시간초과가 나길레 검색을 해보니 DP를 함께 활용하는 문제였다. 그래서 검색을 진행하였고 나온 코드를 기반으로 이해를 진행하면서, 내 코드에서 DP를 활용하도록 변경해주었다. 문제 접근 방법 - 시작 시 dp[x][y] = 0 으로 바꿔주면서 해당 경로를 방문을 했다고 친다. - if(map[x][y] = C) continue; dfs(new People(nx, ny, people.cnt+1)); } hash.remove(arr[people.x][people.y]); 헷갈렸던 점 - 처음에는 visited를 운영해서 for문 전에 visited = true, for문 후에 visited = false로 처리해서 탐색했던 길을 초기화 해주면서 모든 경로를 탐색했었는데, 시간초..
문제 접근 - 사각형으로 칠해진 부분 외에 영역이 몇개의 영역인지, 그리고 영역의 크기가 각각 얼마나 되는지를 구하는 문제이다. - 다른 문제들에서는 친절하게 좌표값이 주어지지만 해당 문제는 꼭지점의 위치를 주기 때문에, 영역을 구하는 과정이 까다로웠다. (둘째 줄부터 K개의 줄에는 한 줄에 하나씩 직사각형의 왼쪽 아래 꼭짓점의 x, y좌표값과 오른쪽 위 꼭짓점의 x, y좌표값이 빈칸을 사이에 두고 차례로 주어진다.) 그래서 아래와 같이 (c1,r1) ~ (c2,r2)를 구하고, 해당 영역을 모두 1로 채워주는 작업을 진행하였다. for (int i = 0; i < K ; i++) { st = new StringTokenizer(br.readLine()); int x1 = Integer.parseInt(..
문제 해석 - 아래 조건대로 정렬을 해야 한다. -- 속한 노래가 많이 재생된 장르를 먼저 수록합니다. -- 장르 내에서 많이 재생된 노래를 먼저 수록합니다. -- 장르 내에서 재생 횟수가 같은 노래 중에서는 고유 번호가 낮은 노래를 먼저 수록합니다. - classic 장르는 1,450회 재생되었으며, classic 노래는 다음과 같습니다. -- 고유 번호 3: 800회 재생 -- 고유 번호 0: 500회 재생 -- 고유 번호 2: 150회 재생 - pop 장르는 3,100회 재생되었으며, pop 노래는 다음과 같습니다. -- 고유 번호 4: 2,500회 재생 -- 고유 번호 1: 600회 재생 - 따라서 pop 장르의 [4, 1]번 노래를 먼저, classic 장르의 [3, 0]번 노래를 그다음에 수록..
문제 해석 - 주어진 숫자들을 그래프로 연결했을 때에, 각 숫자마다 부모가 누구인지를 구하는 문제이다. 처음에는 설명만 읽고나서 뭔소리인가 문제 해석에 시간이 좀 걸렸다. - 루트는 무조건 1부터 시작한다. 헷갈렸던 점 - 그래프를 어떻게 구성해야 하는가가 헷갈렸다. 배열로 풀려고 했으나, 인덱스가 늘어나면서 처리해주기 까다로워 리스트가 적당했다. 이 문제를 통해서 다시 한번 복습할 수 있는 계기가 되었다. - dfs를 어떻게 구성해야 할지 쉬울듯 안쉬울듯 자꾸 머리가 안굴러가서 애먹었다. 직접 메모장에 단계 별로 변수를 적어보면서 구성했다. - 다음 노드에서 이전 parent 노드로 다시 돌아가면 무한루프에 빠지게 되는데, 이 부분을 어떻게 처리해야 할지 고민을 좀 했다. 그래서 num != paren..
문제 접근 - 같은 알파벳을 만나지 않을 최대 경우의 수를 구하는 문제 - 탐색을 시작할 때에 hash.add를 해주고, 탐색을 완료했을 때에 hash.remove를 해주어 계속해서 누적되지 않도록 한다. (만약 누적되면 다른 방향으로 진행할 때에 이전에 탐색한 값 때문에 중복되어 탐색할 수가 없다) 헷갈렸던 부분 - visited 배열을 운영할 필요가 없었다. 왜냐하면 HashSet에서 같은 문자인지를 체크해주기 때문이다. - 탐색을 시작할때 add, 완료했을 때에 remove 해주는 부분을 for문 안에서 구현했었는데 오히려 복잡해져서 for문 밖으로 빼주었다. import java.io.BufferedReader; import java.io.IOException; import java.io.Inpu..
문제 접근 - 8가지 방향으로 이동하는 문제이다. - DFS로 분류하고 문제를 선택한 것으로 인지 했었어서 어떻게 풀어야 하나 고민했다. 아무리 고민해 봐도 BFS 문제로 보여서 문제의 분류를 보니 BFS였다. 헷갈렸던 부분 - for문 안에서 이동 횟수를 1을 더해주니 여러번 움직였을 때에 cnt 출력 값은 맞았지만, 1번만 이동 했을 때에 cnt 출력 값은 0으로 나오는 문제가 있었다. 문제를 파악해보니, for문을 돌 때마다 People의 cnt 값을 더해주기 때문에 올바르지 못한 방법이었다. 그래서 고민한 결과 for문 위로 cnt 값을 빼주어서 해결하였다. - 오랫만에 BFS 풀었던 문제이다. 잊지 않도록 한번씩 리마인드 겸으로 풀어주면 좋을듯하다. import java.io.BufferedRe..
접근 방법 public static boolean dfs(int[][] map, int x, int y, int depth){ - DFS 진행 public static int simulation(int[][] map, int depth, int max) - depth 이하의 숫자들 침수 시키기 - depth max값까지 침수 되지 않은 영역들 모두 탐색 헷갈렸던 케이스 - if(!visited[j][k] && map[j][k] > i){ ... } 부분이 헷갈렸었다. 즉, 숫자 1개만 독립적으로 있는 경우를 잘못 count 해주고 있었다. 3 9 1 1 1 1 9 9 9 9 소스 import java.io.BufferedReader; import java.io.IOException; import java..
문제 설명 k개의 정수가 주어질 때에, 그 중 중앙 값을 찾는 문제이다. 만약 1, 3, -1이 있다면 1이 중앙 값이다. Input으로 nums 배열이 주어지고, Output으로 중앙 값을 출력해준다. 문제 접근 우선 순위 Queue를 2개 운영한다. - PriorityQueue lowerQueue = new PriorityQueue(Comparator.reverseOrder()); - PriorityQueue upperQueue = new PriorityQueue(); 단, 계속해서 중앙 값을 갱신해주기 위해서는 lowerQueue는 높은 숫자들을 빼주어야 하기 때문에 Comparator.reverseOrder()로 설정해준다. 그리고 나서 제거, 추가, 정렬 3단계로 진행되게 된다. 먼저 for문을..
기본 Trie 문제에서 약간 변형이 된 문제이다. 아이디어를 이해하면 풀 수 있을 것이다. 접근 방법 HashMap lengthMap 을 운영하여 각 단계 마다 뒤에 length가 몇개 있는지 확인 진행한다. lengthMap을 운영하면 fro??, fro???인 경우를 구분할 수 있다. 그렇기 때문에 Trie에 insert 시 아래와 같이 작성해주어 length의 갯수가 몇개 있는지 확인하고 1씩 더해준다. int len = str.length(); cur.lengthMap.put(len, cur.lengthMap.getOrDefault(len, 0) +1); search로 찾을 때에는 현재 찾고 있는 str의 length로 HashMap을 접근해준다. 만약, "??" 처럼 queries[]에 동일한 ..
접근 방법 BFS로 풀었던 것처럼, 각 영역마다 방문을 시작하지 않은 곳이 있으면 방문을 시작해준다. 이동 경로를 int[] dx, int[] dy로 선언하여 더해준다. 특이점 길찾기 문제를 DFS로 처음 풀어본 문제. 이동 방향이 4가지가 아닌 대각선까지 포함하여 8가지이다. while문 안에 while문을 통해서 방문하지 않은 곳들을 찾아주려 했었다. 하지만 다시 생각해 보면, DFS를 통해서 나오는 시점에는 모두 탐색을 했기 때문에 while문으로 다시 체크해 줄 필요가 없었다. 그리고 isAllVisited 탈출 코드도 추가해 주다 보니 더 복잡해지게 되었다. package Baekjoon; import java.io.BufferedReader; import java.io.IOException; ..