일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 사용법
- tomcat log
- git 연동
- 국세청 해외주식 양도세 신고방식
- CSTS 폭포수 모델
- Katalon Recorder 사용법
- bfs 미로탐색 java
- 피보나치 예제
- 홈택스 해외주식 양도세
- 피보나치함수 예제
- 테스트 자동화
- 주식 양도세 신고방법
- 재귀 예제
- katalon 비교
- 해외증권 양도세 한국투자증권
- 한국투자증권 해외주식 양도세
- katalon 자동화
- oracle group by
- 해외주식 양도세 신고
- katalon xpath
- katalon
- java.sql.SQLSyntaxErrorException
- recursion example
- 재귀함수 예제
- 톰캣 실시간 로그
- 피보나치함수
- js 자동완성
- 최대공약수 예제
- 한국투자증권 양도세 신고
- javascript 자동완성
- Today
- Total
목록알고리즘 (51)
엄지월드
문제 접근 방법 1. mapCountDFS를 통해 빙산이 두 덩어리 이상으로 되어 있는지 확인을 진행한다. 2. globalWarmingBFS를 통해 빙산을 녹여주는 작업을 진행한다. 헷갈렸던 점 - 빙산이 녹으면서 한번에 모두 0이 되어 덩어리가 0이 되는 경우를 잘못 처리해줬었다. 그래서 녹으면서 한번에 모두 0이 되면 result = 0; 으로 다시 초기화를 진행해주었다. int result = 0; while(true){ int mapCount = countMapDFS(); if(mapCount == 0){ // 모두 녹아 있을 때에 처리 result = 0; break; } ... ... } - 6%에서 계속 틀렸습니다.가 떠서 질문 게시판에 있는 반례를 모두 적용해보았으나, 정상 작동하였다. ..
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[]에 동일한 ..