분류 전체보기 (118) 썸네일형 리스트형 [JAVA] 프로그래머스 - 의상 고득점 알고리즘 kit에 수록된 의상 문제다. 백준에서 동일한 문제를 풀었던 기억이 있으나 한번에 성공하지 못했다.. 새로운 문제와 알고리즘을 푸는 것도 중요하지만 복습의 중요성도 느꼈다.. 🤔 문제 접근 주어지는 입출력 예시는 다음과 같다. 의상 이름인 clothes[i][0] 은 중요하지않고 의상 종류인 clothes[i]의 2번째 데이터, clothes[i][1]을 가지고 풀어야한다. 종류별로 한 벌씩만 입을 수 있기 때문에 의상 이름은 중요하지 않고 의상 종류에 주목해야 하기 때문이다. ✅ 핵심 풀이 내가 풀었었던 문제임에도 한번에 풀지 못했던 이유인 "해당 의상을 안 입었을 경우"를 고려해야한다. clothes[i][1]을 Map에 put해주고 Map의 entrySet을 활용해 순회해주며 알아낸.. 우테코 웹 백엔드 1차 합격 및 최종 불합격 후기 우아한 테크코스가 끝난지 좀 지났고 안 쓰려 했는데 그냥 일기라 생각하고 적어본다.우테코를 도전하는 사람들에게 조금이나마 도움이 되면 굿 약 1달간의 프리코스 과정이 끝나고사실 1차 합격 할 것 같지 않아서 머리속에 잊고 살았다.당연히 1차 합격 발표일도 까먹고 있다가 우연히 메일에 1차 발표 메일이 와 있어서 알게 되었다. 저때나 시험보러 갈 때나 지금이나 어떻게 합격했는지 정말 의문이었다..프리코스 2주차까진 mvc패턴은 사용도 안했고 죄다 main에서 코딩하다3주차때야 어설프게 적용해보려 했기 때문에 프리코스 테스트 케이스는 통과했지만완성도 있는 코드라고는 생각하지 않았고 합격을 기대하진 않았었다. 아무튼 전혀 생각하지 않았던 합격 소식이라 기쁘기도 했지만 최종 코테를 제대로 준비하지않고 있었기.. [JAVA] 백준 - 1920 수 찾기 이분탐색을 사용하는 문제다. 알고리즘 문제들을 풀며 느낀 것 중 하나인데 문제를 읽어보고 뭔가 완전 탐색을 진행해야 될 것 같은데 문제에서 주어지는 데이터의 범위가 엄청 크다면 -> 이분탐색 데이터의 범위가 작다면 -> 완전탐색 인 것 같다. 물론 모든 문제가 그렇지 않을 것이고 그냥 개인적인 느낌이다. 🤔 문제 접근 주어진 M개의 데이터가 N개의 숫자 중 존재하는지 확인하면 되는 문제다. 문제를 보고 N개의 숫자 데이터를 ArrayList에 담은 뒤 contains 메서드를 이용해 풀고자 했지만 시간초과가 났다. 그 이유는 contains 메서드는 데이터 n개 내에서 A라는 데이터가 존재하는지 확인 할 때 n개 데이터 전체를 완전 탐색하기 때문에 최악의 경우 작업 횟수가 n*m 번 진행된다. 따라서 이.. [JAVA] 백준 - 9019 DSLR Solved.ac class 에서 풀어볼만한 문제들이 많아서 풀고있다. 백준 online judge 에서 어떤 문제를 풀어야할지 모르겠다면 class문제들을 풀어보는 것을 추천한다. DSLR 문제는 class 3++ 문제 중 정답률도 낮고 상당히 난이도 있는 문제였다. 🤔 초기 문제 접근 Original 숫자가 Target 숫자가 되기 위해서 DSLR 명령어를 사용해 가능한 모든 경우의 수 중 제일 짧은 명령어를 찾는 문제이기 때문에 완전 탐색 문제라고 생각했다. 초기 코드의 흐름은 재귀적인 방법으로, DSLR 명령어를 수행한 값을 다시 parameter로 넣어주며 StringBuilder 에 명령어를 append 해주는 방식이었다. 이때 num(parameter) == target이면 result 문자.. [JAVA] 백준 14502 - 연구소 삼성 SW 역량 테스트 기출 문제 중 하나인 연구소 문제이다. 🤔 문제 접근 당연한 얘기지만 벽을 어떻게 세우느냐가 가장 중요한 포인트라고 생각했다. 하지만 벽을 세우는 기준을 잡기가 어려웠다. [예제 1] 예제 1의 맵을 봤을 때, 왼쪽 상단의 바이러스인 2 의 오른쪽 [1,2] 과 아래 [2,1] 에 벽을 세우고, 마지막 벽은 좌표 [4,6]에 세우면 안전구역 넓이가 최대가 된다. 이것과 예제2, 3의 경우를 보고 바이러스인 2를 기준으로 그래프 탐색을 해야하는지 기존에 벽이었던 1에서 그래프 탐색을 통해 새로운 벽 3개를 세워야 할지 고민이었다. ✅ 핵심 풀이 위 고민의 답은 바로 "완전 탐색" 이었다. 기존 맵 전체를 확인하여 [i, j]의 좌표가 0 인 경우, 벽을 세울 수 있는 장소가 된다. .. 이분 탐색 - Binary Search 이분 탐색 이란 탐색 범위를 두 부분으로 분할 하면서 찾는 방식 처음부터 마지막까지 돌면서 탐색하는 것 보다 훨씬 빠른 장점이 있다. 시간의 복잡도 전체 탐색 : O(N) 이분 탐색 : O(logN) 진행 순서 데이터를 정렬해야 한다. 시작 값인 start, 끝 값인 end로 중간 값인 mid 를 설정해야한다. mid값과 내가 구하고 싶은 값을 비교한다. 구할 값이 mid보다 높으면 start = mid + 1 구할 값이 mid보다 낮으면 end = mid-1 이 것을 start>=end가 될 때 까지 반복한다. Code public static int solution(int[] arr, int M) { // arr 배열에서 M을 탐색 Arrays.sort(arr); // 정렬 int start = 0;.. [JAVA] 백준 16234번 - 인구 이동 풀이방법 - 그래프 탐색 알고리즘을 이용해서 푸는 문제였다. 그 중 BFS 알고리즘을 사용해서 풀었다. - BFS 알고리즘을 이용한 이유는 각 좌표에서 이웃한 국가들, 그리고 연합과 이웃한 국가들 중에서 연합이 될 수 있는 좌표들만 탐색하면 되기 때문이다. (전체 탐색 필요 X) - 전체 map을 첫 좌표 (0,0) 부터 마지막 좌표 (n,n) 까지 탐색 하면서 BFS알고리즘을 이용해 인구 수 차이가 L~R 사이인 나라를 찾고 union 큐에 넣어줬다. > 처음엔 map과 같은 2차원 배열을 만들어서 연합이면 map[i][j] = 1로 설정해서 union 정보를 저장하려 했으나 탐색하는 과정을 한번 더 거쳐야 하는 복잡하고 번거로운 방법이라 생각하여 큐로 방법을 바꾸었다. > 큐를 사용하면 그때 그때 연.. 그래프 탐색 - DFS & BFS # DFS (깊이 우선 탐색) 루트, 혹은 임의 노드까지 다음 브랜치로 넘어가기 전에 해당 브랜치를 모두 탐색하는 알고리즘이다. 자기자신을 호출하는 순환 알고리즘의 형태로써 스택이나 재귀함수로 구현한다. 그래프의 모든 경로를 방문해야할 경우에 사용에 적합하다, # DFS Code // i 정점부터 시작. public static void dfs(int i) { visit[i] = true; // 이미 방문한 노드인지 체크를 위한 배열, Boolean System.out.print(i + " "); // j는 dfs 배열의 새로운 브랜치를 뜻함. // map은 그래프를 나타내며 그래프 연결 정보를 // map[a][b] = map[b][a] = 1; 로 저장한다. (a노드와 b노드가 연결되어있다(1)는 정.. 이전 1 ··· 10 11 12 13 14 15 다음